假设在 Elasticsearch 中存在一个对象 Sku,它包含一个名为 CarSpecs 的数组,每个元素都是一个包含 Id 和 Value 属性的对象。现在,您需要查询满足以下条件的 Sku:Sku.CarSpecs 中的每个元素都能在您传入的 CarSpecs 数组中找到对应的对象。

为了实现这个查询,可以使用 nested 查询。下面是一个示例查询语句:

{
  "query": {
    "nested": {
      "path": "Sku.CarSpecs",
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "Sku.CarSpecs.Id": 101
              }
            },
            {
              "term": {
                "Sku.CarSpecs.Value": 101001
              }
            }
          ]
        }
      }
    }
  }
}

解析:

  1. 使用 nested 查询,指定路径为 Sku.CarSpecs
  2. query 中使用 bool 查询,指定多个 must 条件。
  3. 第一个 must 条件使用 term 查询,指定 Id 为 101。
  4. 第二个 must 条件使用 term 查询,指定 Value 为 101001。
  5. 如果查询结果中存在 Sku.CarSpecs 中每个元素都能在 CarSpecs 中找到对应的对象,则满足查询条件。

注意:

  • 此示例假设传入的 CarSpecs 数组包含所有需要匹配的元素。
  • 如果传入的 CarSpecs 数组包含多个元素,需要将 must 条件中的 term 查询改为 terms 查询,以匹配所有元素。
  • 您可以根据实际需求调整查询语句中的条件和逻辑。
Elasticsearch 查询嵌套对象:匹配所有 CarSpecs 元素

原文地址: https://www.cveoy.top/t/topic/k6sW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录