【问题标题】:Elasticsearch - Query on array for matching multiple objects in the arrayElasticsearch - 查询数组以匹配数组中的多个对象
【发布时间】:2018-09-24 07:29:42
【问题描述】:

我正在尝试编写一个查询,该查询会将文档与作为对象数组的嵌套对象进行匹配。示例:

{"ListName" : "List 1", "Fruits": [ { "name" : "Apple"}, {"name": "Orange"}, {"name" : "banana"} ] }

如果我根据 Fruits 数组中的名称获取上面的文档,我想编写一个查询,例如苹果和橙子。

我目前的匹配名称与 Apple 和 Orange 在同一名称字段中而不是每个对象中匹配。

 {
  "query": {
    "nested": {
      "path": "Fruits",
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "Fruits.name": "Apple"
              }
            },
            {
              "match": {
                "Fruits.name": "Orange"
              }
            }
          ]
        }
      }
    }
  }
}

【问题讨论】:

    标签: json elasticsearch kibana


    【解决方案1】:

    您需要在 bool/must 查询中创建两个不同的 nested 查询,如下所示:

    {
      "query": {
        "bool": {
          "must": [
            {
              "nested": {
                "path": "Fruits",
                "query": {
                  "term": {
                    "Fruits.name": "Apple"
                  }
                }
              }
            },
            {
              "nested": {
                "path": "Fruits",
                "query": {
                  "match": {
                    "Fruits.name": "Orange"
                  }
                }
              }
            }
          ]
        }
      }
    }
    

    【讨论】:

    • 酷,很高兴它有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2013-11-12
    • 2018-08-29
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多