当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch范围过滤数值数据类型(如整型、长型、双精度)的奇怪行为

濮阳靖
2023-03-14

我有整数字段范围从0-100,我使用查询过滤器与gte, lte和gt, lt.当我设置过滤器0-100时,弹力搜索的行为非常奇怪,它只显示1个结果,当我设置范围从0到99时,它会给我正确的结果(在我的情况下是2)。

即使我设置范围从0-1000它给我0结果集。首先,我认为这可能是由于数据类型问题,因为我的值(成本)被存储为字符串,但现在我已经将数据类型更改为整数,但范围过滤器仍然不能正常工作。

搜索查询

{
"query": {
   "filtered": {
    "filter": {
      "bool": {
        "must": [
          {
          "range": {
            "cost": { 
              "gte": 0,
              "lte":100
            }
          }
        },
          {
            "term":{
              "parentId":"6"
            }
          }
        ]
      }
    }
  }
}

}

共有1个答案

罗业
2023-03-14

删除索引(如果需要)/重新索引数据将解决问题。

 类似资料:
  • 为什么此代码引发此异常: 线程“main”java.lang.ClassCastException:java.lang.Integer无法强制转换为java.lang.Double 而这个,运行良好: 两者都是尝试将整数转换为双精度,对吗?

  • 问题内容: 我已经将我的Elasticsearch从v1.9升级到v5,并且我注意到很多事情已经改变。 如果我以v1.9为例:以下代码检查对象类型是否匹配,并过滤其中字段为的项目。 现在,从v1.9升级到v5后,我注意到已更改为和现在。现在,由于不再可用,我无法执行与以前相同的操作。 所以我想知道是否有替代解决方案来检查对象类型。 https://i.stack.imgur.com/dOPex.p

  • 问题内容: 有没有人看到像这样的方法签名后放置的数组? 版画 过去,“ C”兼容性是一种奇怪的表示法,但我也无法想象有人用C编写这种代码。 有谁知道为什么甚至允许这样做? 如果有问题,我正在使用Java 7 update 10。 这与Java 6中的功能相同。http://ideone.com/91rZV1 顺便说一句,这不会编译,我也不希望它编译 问题答案: 有谁知道为什么甚至允许这样做? 在这

  • 这是一个至少为64 bit的整数类型(译注:实际宽度依赖于具体的实现平台),例如: long long x = 9223372036854775807LL; 不过,不要想当然地认为存在long long long或者将long拼写为short long long。 (译注:如同J. Stephen Adamczyk在参考文献中所言,”long long”是一个晦涩的拼写64-bit整数类型的方式

  • 我试图在我的对话框中添加一个总计,但是我得到了一个错误信息,我似乎不能修复它。如果我试图将总计放入for循环中,它会在对话框中打印5次。我确实需要将总计打印在对话框的最后

  • 2.2.2 长整数类型 long 如果在计算过程中出现超出 int 范围的整数怎么办?我们来看一个例子: >>> 123456789 * 10 1234567890 >>> 123456789 * 18 2222222202L 注意观察第二个表达式的结果——2222222202 的后面有个“L”。我们对此解释如下:第 一个表达式的计算没有问题,因为 1234567890 处于 int 类型范围之