elasticsearch_dsl中Q('match', path=path_to_file)的作用是什么?
关于elasticsearch_dsl中
Q('match', path=path_to_file)的作用说明 elasticsearch_dsl提供的Q辅助函数遵循固定传参规则:第一个位置参数为Elasticsearch查询类型标识,后续所有关键字参数的键名分两类:- 如果是对应查询类型的官方原生参数,即为查询配置项
- 如果不是查询类型的原生参数,即为要查询的目标文档字段名,参数值为该字段的查询输入值
你看到的ES_dsl.Q('match', path=path_to_file)中,path不是match查询的内置参数,而是你的业务索引中存储文件路径的字段名,该语句的本质是对索引中名为path的字段执行match查询,查询的输入值为变量path_to_file对应的文件路径。
认知误区澄清
你印象中嵌套查询的path参数,是查询类型为nested时的专属配置参数,用来指定嵌套对象的根路径,和当前场景完全无关:当前path只是普通的业务字段名,只是刚好和嵌套查询的参数名重名而已。
match查询行为说明
你猜测的“反分词处理实现精确匹配”不符合实际逻辑:match查询会使用目标字段配置的搜索分词器,对输入的path_to_file做分词后再和字段的倒排索引匹配,不会主动做反分词处理。如果要实现路径的精确匹配,需要满足两个条件之一:
path字段配置为keyword不分词类型,使用term查询替代match查询- 使用
match_phrase短语查询,要求分词结果的顺序和内容完全匹配
上述Q语句最终生成的原生Elasticsearch查询DSL示例如下:
{ "match": { "path": "<path_to_file变量的实际路径值>" } }
内容的提问来源于stack exchange,提问作者mamajama
相关产品推荐
相关产品推荐

