Elasticsearch无法匹配含全部查询词汇文档的技术求助
解决Elasticsearch同时匹配多个关键词的查询问题
你当前的查询会返回仅含word2的文档,核心原因是match查询默认使用OR逻辑——只要文档包含任意一个关键词就会被命中,而非同时包含两个目标词。
下面是两种可行的修正方案:
方案1:修改match查询的匹配逻辑为AND
在原有的match配置中添加operator: "AND"参数,强制要求同时匹配两个关键词:
{ "query": { "bool": { "filter": [ { "term": { "source": "source1" } }, { "term": { "qty": "1" } } ], "must": [ { "match": { "product_name": { "query": "word1 word2", "fuzziness": "AUTO", "operator": "AND" } } } ] } } }
方案2:拆分多个match查询到bool的must数组中
把两个关键词拆分成独立的match查询,放入must数组。利用bool查询的must逻辑(所有条件必须同时满足),确保文档同时包含两个关键词:
{ "query": { "bool": { "filter": [ { "term": { "source": "source1" } }, { "term": { "qty": "1" } } ], "must": [ { "match": { "product_name": { "query": "word1", "fuzziness": "AUTO" } } }, { "match": { "product_name": { "query": "word2", "fuzziness": "AUTO" } } } ] } } }
内容的提问来源于stack exchange,提问作者parag mangal
相关产品推荐
相关产品推荐

