web-dev-qa-db-ja.com

Elasticsearch-フィルターでquery_stringとboolクエリを組み合わせる

query_stringbool queryfilter queryで組み合わせることができますか?

例えば ​​-

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

boolは、さまざまなクエリを1つの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"
          }
        }
      ]
    }
  }
}
36
Vineeth Mohan