ElasticSearch nested类型字段OR条件filter查询实现咨询
符合需求的Elasticsearch查询实现
因为你的data字段是nested嵌套类型,查询嵌套字段内容必须使用nested查询指定路径,同时将所有条件放入bool.filter块即可跳过打分逻辑,完全匹配你的需求。
最终查询DSL
GET /ab11/_search { "query": { "bool": { "filter": [ { "nested": { "path": "data", "query": { "terms": { "data.p_id": ["a", "b"] } } } } ] } } }
说明
- 上述查询等价于你给出的SQL逻辑:匹配
data数组中至少有一个元素的p_id值为a或者b的所有文档 - 条件放在
filter上下文中不会计算相关性得分,查询性能更高 - 注意你示例SQL中写的
data.pid和索引实际定义的data.p_id字段名不一致,查询时需要以索引实际的字段名为准 - 如果你需要同时返回匹配到的具体nested子文档内容,可以在
nested查询中添加"inner_hits": {}参数
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

