如何在Elasticsearch中使用zero_terms_query?none和all取值有何差异
Elasticsearch zero_terms_query 参数取值区别说明
zero_terms_query 是 match 查询的专属控制参数,作用场景为:查询文本经过对应字段的分词器处理后,所有词项都被过滤(最常见的场景是查询文本全是停用词,比如示例里的to be or not to be,若使用开启了英文停用词过滤的分词器,所有内容都会被过滤,最终得到空的词项列表),此时该参数决定查询的执行逻辑。
两个取值的核心区别如下:
- none:为参数默认值。分词后无有效词项时,直接返回空结果,即没有任何文档命中查询。
- all:分词后无有效词项时,等效执行
match_all查询,返回索引内的全部文档。
你给出的示例代码场景下,如果body字段配置的分词器开启了英文停用词过滤,查询字符串分词后没有有效词项,配置"zero_terms_query": "all"会返回索引所有文档;如果替换为none,则不会返回任何结果。
内容的提问来源于stack exchange,提问作者TanPS
相关产品推荐
相关产品推荐

