Elasticsearch - 在过滤器中组合query_string和bool查询

时间:2014-12-29 19:38:46

标签: elasticsearch lucene query-string booleanquery

是否可以在query_string合并bool queryfilter query

例如 -

{
  "filter": {
    "query_string": {
      "query": "field:text"
    }
  },
  "bool": {
    "should": {
      "match": {
        "field": "text"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:30)

bool旨在用于将各种查询聚合成一个bool查询。 您可以使用bool以这种方式组合多个查询 -

{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "field:text"
          }
        },
        {
          "match": {
            "field": "text"
          }
        }
      ]
    }
  }
}

must子句将确保所有条件都匹配。 您还可以使用should,以确保在仅使用should的情况下,任何一个查询都匹配。

由于bool只是另一种查询类型,你也可以按照以下方式在bool查询中加入bool查询 -

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "must": [
              {
                "query_string": {
                  "query": "field:text"
                }
              },
              {
                "match": {
                  "field": "value"
                }
              }
            ]
          }
        },
        {
          "match": {
            "field": "text"
          }
        }
      ]
    }
  }
}