【问题标题】:Elastic search result with range operator returning wrong results范围运算符返回错误结果的弹性搜索结果
【发布时间】:2020-07-30 09:44:56
【问题描述】:

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

弹性搜索查询

{"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}

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

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

我期望结果中有一行,也就是这里提到的表格的第二行。 但是从弹性搜索头搜索时我得到了所有行

【问题讨论】:

    标签: c# elasticsearch


    【解决方案1】:

    这是由于浮点精度造成的。

    您需要将Value_MinValue_Max 字段的类型更改为double 而不是float,这样您的查询就会按照您的预期进行。

    【讨论】:

    • 酷,很高兴它有帮助!
    猜你喜欢
    • 1970-01-01
    • 2019-06-19
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2012-03-06
    相关资源
    最近更新 更多