Elasticsearch Nested 查询:匹配 Sku.CarSpecs 中的元素
可以使用 nested 查询来实现。具体的代码如下:
var searchResponse = await _elasticClient.SearchAsync<Sku>(s => s
.Query(q => q
.Nested(n => n
.Path(p => p.CarSpecs)
.Query(nq => nq
.Bool(b => b
.Must(q.Select(item => new QueryContainer(
q => q.Term(t => t
.Field(f => f.CarSpecs.First().Id)
.Value(item.Id)
),
q => q.Term(t => t
.Field(f => f.CarSpecs.First().Value)
.Value(item.Value)
)
)).ToArray())
)
)
)
)
);
其中,使用了 nested 查询,指定了查询路径为 CarSpecs。然后,使用 Bool 查询,将多个 Term 查询组合起来,每个 Term 查询对应一个参数 q 中的元素,分别查询 Id 和 Value 是否匹配。最后,将所有的查询组合起来,使用 ToArray() 方法转换为数组,作为 Bool 查询的参数。
原文地址: https://www.cveoy.top/t/topic/k6s5 著作权归作者所有。请勿转载和采集!