【问题标题】:How to query elasticsearch for greater than and less than?如何查询elasticsearch的大于和小于?
【发布时间】:2021-09-11 23:25:46
【问题描述】:

我想获取 1000 到 2000 之间的值。我尝试了这个查询:

{
    "query": {
        "bool": {
            "filter": [{
                "range": {
                    "price": {
                        "gte": 1000
                    },
                    "price": {
                        "lte": 2000
                    }
                }
            }]
        }
    }
}

但这并没有给出令人满意的结果。大于工作正常。我正在使用弹性搜索 v6.3。请帮助解决这两个值的包含和排除问题。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    返回 price 值介于 1000 和 2000 之间的文档。

    {
        "query": {
            "range" : {
                "price" : {
                    "gte" : 1000,
                    "lte" : 2000
                }
            }
        }
    }
    

    范围查询

    匹配具有特定范围内术语的字段的文档。 Lucene 查询的类型取决于字段类型,对于字符串 字段,TermRangeQuery,而对于数字/日期字段,查询是 一个 NumericRangeQuery。

    gte - 大于或等于

    lte - 小于或等于

    gt - 大于

    lt - 小于

    https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html

    【讨论】:

    • 不需要boolfilter 键吗?
    • 不,它不适用于 ES 6.3。看看链接中给出的例子。
    • 根据您使用boolfilter 的示例,您可以将gtelte 合并到一个price 括号内,应该类似。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    相关资源
    最近更新 更多