弹性搜索的组合 OR 和 AND 查询

Combined OR and AND query for elastic search

有人可以帮助为以下情况创建弹性搜索查询。

((Field1=Keyword1 AND Field2=Keyword1) OR (Field1=Keyword2 AND Field2=Keyword2) OR ...

提前致谢。

它基本上是一个 top-level bool/should 嵌套 bool/filter

{
  "query": {
    "bool": {
      "minimum_should_match": 1,
      "should": [
        {
          "bool": {
            "filter": [
              {
                "term": {
                  "Field1": "Keyword1"
                }
              },
              {
                "term": {
                  "Field2": "Keyword1"
                }
              }
            ]
          }
        },
        {
          "bool": {
            "filter": [
              {
                "term": {
                  "Field1": "Keyword2"
                }
              },
              {
                "term": {
                  "Field2": "Keyword2"
                }
              }
            ]
          }
        }
      ]
    }
  }
}

您可以使用的最简单的方法之一是来自 Elasticsearch 的 Query String 查询类型。这将在内部创建 bool 查询。

{
  "query": {
    "query_string": {
      "query": "((Field1:Keyword1 AND Field2:Keyword1) OR (Field1:Keyword2 AND Field2:Keyword2) OR (Field2:Keyword2))"
    }
  }
}