如何在弹性搜索中为多个布尔查询生成查询

How can I generate Query in elastic search for multiple boolean queries

我想在使用 spring 框架的 elasticsearch 中动态生成多个布尔运算的查询。

我在elasticsearch中的数据是这样的

{
   "masterID" : "<id>"
   "processedData": [
                {
                    "string_value": "22",
                    "key": "a"
                },
                {
                    "string_value": "abc",
                    "key": "s"
                },
                {
                    "string_value": "xyz",
                    "key": "n"
                }
            ]
}

我想为这个布尔运算执行查询 ((n=xyz) && (s=abc))

为了能够查询数组内部对象,您应该将 processedData 映射为嵌套类型,对象数组不会像您预期的那样工作,因为您无法独立于数组中的其他对象查询每个对象。如果您需要能够做到这一点,那么您应该使用嵌套数据类型而不是对象数据类型。更改映射后,您可以使用 bool 查询进行嵌套查询,如下所示:

{
  "query": {
    "nested": {
      "path": "processedData",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "key": "n"
              }
            },
            {
              "match": {
                "string_value": "xyz"
              }
            }
          ]
        }
      }
    }
  }
}

有关更多信息,您可以在此处查看:https://www.elastic.co/guide/en/elasticsearch/reference/master/array.html