elastic search 里存在对象如下:Sku CarSpecs SkuCarSpecs里的对象结构是IdValue现在传入参数qq是个Arrayq里面的对象结构是IdValue如下:要求SkuCarSpecs里每一个元素都必须在q数组里找得到Id和Value相等的对象才能满足返回的条件应该如何写查询?
可以使用nested查询来实现此需求。具体的查询语句如下:
{
"query": {
"nested": {
"path": "Sku.CarSpecs",
"query": {
"bool": {
"must": [
{"match": {"Sku.CarSpecs.Id": q[0].Id}},
{"match": {"Sku.CarSpecs.Value": q[0].Value}}
]
}
}
}
}
}
其中,path参数指定了嵌套对象的路径,query参数指定了嵌套查询的条件。在这个查询中,我们使用了一个bool查询来组合两个match查询,分别匹配Id和Value字段是否与q中的对象相等。如果所有的q中的对象都能在Sku.CarSpecs中找到相等的对象,那么这个SKU就会被查询出来。
原文地址: https://www.cveoy.top/t/topic/dJt4 著作权归作者所有。请勿转载和采集!