弹性搜索结果与range算子返回错误结果
ElasticSerchQuery
{"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)时,它返回正确的值。
搜索查询是否依赖于范围运算符的数据类型?
我期望结果中有一行,这是这里提到的表的第二行。但是当我从弹性搜索头搜索的时候,我得到了所有的行
发布于 2020-07-30 01:55:36
这是由于浮点精度。
您需要将Value_Min
和Value_Max
字段更改为double
类型,而不是float
类型,您的查询将按照预期的方式进行。
https://stackoverflow.com/questions/63170486
复制相似问题