Elasticsearch:按ID查找文档并基于查询字符串高亮关键词
Elasticsearch 按指定ID查询并高亮匹配术语的正确写法
你之前的查询失效是因为bool查询的must参数需要接收数组而非单个对象——你把query_string和term查询直接塞在了同一个must对象里,语法错误导致查询不生效。
正确的写法应该把两个查询放进must数组中,这样Elasticsearch会先通过_id精准定位到目标文档,再在该文档内执行查询字符串匹配并高亮,完全不会出现扫描数百万文档的低效情况:
{ "query": { "bool": { "must": [ { "query_string": { "query": "red*", "fields": ["text", "title"] } }, { "term": { "_id": "fda72434fa172" } } ] } }, "highlight": { "fields": { "text": {}, "title": {} } } }
补充说明:如果目标文档的ID匹配,但内容不符合查询字符串,查询结果会是空,这完全符合“仅返回ID匹配且内容命中查询词的文档并高亮”的需求。
内容的提问来源于stack exchange,提问作者The Bndr
相关产品推荐
相关产品推荐

