范围运算符返回错误结果的弹性搜索结果

阿维纳什·阿维

范围运算符返回错误结果的弹性搜索结果

在此处输入图片说明

弹性查询

{"query": {"bool": {"filter": [{"term": {"Id": {"value": "v1"}}},{"term": {"Segment": {"value": 1}}},     {"term": {"Attribute": {"value": "Test"}}},{"range": {"Value_Min": {"lte": 999999996}}},{"range": {"Value_Max": {"gte": 999999996}}}]}}, "sort": [{"Value_Min": {"order": "asc"}}], "size": 10}

表中的前两列是精确匹配,表中的第 3 和第 4 列是范围操作 用于范围操作()值 min 和值 max 的数据类型是浮点数。当我搜索小值时,我正在搜索大值(999999996),它返回正确的值。

搜索查询是否依赖于范围运算符的数据类型?

我期待结果中有一行,这是此处提到的表的第二行。但是从弹性搜索头搜索时我得到了所有的行

瓦尔

这是由于浮点精度。

您需要将您的Value_MinValue_Max字段更改为类型double而不是,float您的查询将按照您期望的方式进行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章