Elasticsearch 查询嵌套对象:匹配所有 CarSpecs 元素
假设在 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
}
}
]
}
}
}
}
}
解析:
- 使用
nested查询,指定路径为Sku.CarSpecs。 - 在
query中使用bool查询,指定多个must条件。 - 第一个
must条件使用term查询,指定Id为 101。 - 第二个
must条件使用term查询,指定Value为 101001。 - 如果查询结果中存在
Sku.CarSpecs中每个元素都能在CarSpecs中找到对应的对象,则满足查询条件。
注意:
- 此示例假设传入的
CarSpecs数组包含所有需要匹配的元素。 - 如果传入的
CarSpecs数组包含多个元素,需要将must条件中的term查询改为terms查询,以匹配所有元素。 - 您可以根据实际需求调整查询语句中的条件和逻辑。
原文地址: https://www.cveoy.top/t/topic/k6sW 著作权归作者所有。请勿转载和采集!