【问题标题】:Adding two filters with one query in elasticsearch在elasticsearch中用一个查询添加两个过滤器
【发布时间】:2017-07-11 06:23:16
【问题描述】:

我正在尝试将一个范围过滤查询、一个布尔必须匹配查询和一个恒定分数(术语)过滤查询组合在一个查询中。到目前为止,我将范围过滤器查询和 bool-must-match 查询结合起来:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "market": "Android"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "sold": {
              "gte": "20170601",
              "lte": "20170602"
            }
          }
        }
      ]
    }
  }
}

如何在其中添加此查询:

{
    "query" : {
        "constant_score" : {
            "filter" : {
                "terms" : { 
                    "price" : [200, 300]
                }
            }
        }
    }
}

有没有办法将这三个结合在一起?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以简单地将其添加到bool/filter 部分,因为过滤器具有恒定分数:

    {
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "market": "Android"
              }
            }
          ],
          "filter": [
            {
              "terms": {
                "price": [
                  200,
                  300
                ]
              }
            },
            {
              "range": {
                "sold": {
                  "gte": "20170601",
                  "lte": "20170602"
                }
              }
            }
          ]
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      相关资源
      最近更新 更多