Elasticsearch:如何基于另一索引字段值匹配查询目标索引文档
跨索引匹配查询实现方案
要获取index01中department字段值与index02的course_name字段值匹配的文档,你可以使用Elasticsearch的Terms Lookup功能,它支持从另一个索引中动态获取匹配值列表,无需提前导出数据。
具体查询语句
GET /index01/_search { "query": { "terms": { "department": { "index": "index02", "id": "*", "path": "course_name" } } } }
关键参数说明
terms.department: 指定要匹配的index01目标字段index: 数据源索引,这里指定为index02id: 设置为*表示获取index02中所有文档的对应字段值;若需限定特定文档,可直接指定文档IDpath: 指定index02中用来匹配的字段,即course_name
注意事项
- 确保
index02的course_name字段是keyword类型(或其他可聚合的字段类型),Terms Lookup依赖字段的聚合能力提取值列表 - 如果
index02文档量较大,可通过添加过滤条件(在terms内嵌套filter)缩小数据范围,避免性能损耗 - 默认情况下,Terms Lookup最多返回100个匹配值,若需要更多结果可调整
size参数
内容的提问来源于stack exchange,提问作者Srujan Gundeti
相关产品推荐
相关产品推荐

