ElasticSearch7.10+ REST API如何关联搜索命中结果与查询词
关于ElasticSearch 7.10+获取命中结果对应查询词的解决方案
结论
完全可以实现,ElasticSearch 7.10及以上版本原生支持该需求,无需额外安装插件。
推荐实现方案
方案1:高亮查询(优先选择,性能损耗低)
这是最适合违禁词审核场景的方案,只需要在查询请求中增加高亮配置,就能直接返回每个命中结果对应的匹配查询词片段:
POST /你的违禁词索引名/_search { "query": { "match": { "违禁词字段名": { "query": "待审核的句子内容", "analyzer": "你配置的查询时分析器" } } }, "highlight": { "fields": { "违禁词字段名": {} } } }
返回结果中的highlight字段会包含被标记的匹配内容,直接对应到你录入的违禁词以及命中的查询词片段。
方案2:开启explain参数(适用于需要底层匹配细节的场景)
如果你需要获取更详细的匹配逻辑(比如后续开启模糊查询后,要确认编辑距离、词干匹配的具体规则),可以在查询时添加explain=true参数:
POST /你的违禁词索引名/_search?explain=true { "query": { // 和你的原有查询逻辑一致 } }
返回结果的explanation字段会完整记录每一条命中的匹配逻辑,包含命中对应的具体查询词、匹配类型(词干匹配/模糊匹配等)、匹配得分细节。
注意事项
- 高并发审核场景优先选高亮方案,explain会带来额外的性能开销,仅在需要排查匹配规则、校验模糊匹配效果时开启即可
- 后续开启模糊查询配置后,上述两种方案依然适用,高亮会直接标记出被模糊命中的用户输入内容,explain会返回具体的模糊匹配编辑距离数值,方便你做匹配强度的阈值判断
内容的提问来源于stack exchange,提问作者Darko
相关产品推荐
相关产品推荐

