在elasticsearch中使用一个查询添加两个过滤器

时间:2017-07-11 06:23:17

标签: elasticsearch

我正在尝试在一个查询中组合范围过滤器查询,bool必须匹配查询和常量分数(术语)过滤器查询。到目前为止,我有范围过滤器查询和bool-must-match查询组合:

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

如何在此处添加此查询:

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

有没有办法将所有三个组合在一起?

1 个答案:

答案 0 :(得分:0)

您只需将其添加到bool/filter部分,因为过滤器具有固定分数:

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