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

29

filter query中,是否可以将query_stringbool query组合使用?

例如 -

{
  "filter": {
    "query_string": {
      "query": "field:text"
    }
  },
  "bool": {
    "should": {
      "match": {
        "field": "text"
      }
    }
  }
}
1个回答

66

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

1
我们如何针对多个字段进行目标定位? - Oliver Dixon
@OliverDixon "query_string": { "query": "field:text", "fields":['field1","field2"] } @OliverDixon "查询字符串": { "查询": "字段:文本", "字段":['字段1","字段2"] } - Wolfgang Blessen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接