本地英文版地址: ../en/query-dsl-match-bool-prefix-query.html
match_bool_prefix
查询分析它的输入内容,并根据这些词项构造一个 bool
查询。
除最后一个词项外,每个词项都用于 term
查询。
最后一个词项用于 prefix
查询。
match_bool_prefix
查询像这样:
GET /_search { "query": { "match_bool_prefix" : { "message" : "quick brown f" } } }
其分析后产生的词项quick
、brown
和 f
类似于下面的 bool
查询:
GET /_search { "query": { "bool" : { "should": [ { "term": { "message": "quick" }}, { "term": { "message": "brown" }}, { "prefix": { "message": "f"}} ] } } }
match_bool_prefix
查询和 match_phrase_prefix
查询一个重要的区别是:match_phrase_prefix
查询将其词项作为短语进行匹配,而 match_bool_prefix
查询可以在任何位置匹配其词项。
上面的 match_bool_prefix
查询示例可以匹配包含quick brown fox
的字段,但也可以匹配 brown fox quick
。
它还可以匹配任何位置出现的包含词项quick
、词项 brown
及以 f
开头的词项的字段。
默认情况下,将使用查询的字段在其映射中定义的分析器去分析match_bool_prefix
查询的输入文本。
可以使用 analyzer
参数配置一个不同的搜索(时使用的)分析器:
GET /_search { "query": { "match_bool_prefix" : { "message": { "query": "quick brown f", "analyzer": "keyword" } } } }
match_bool_prefix
查询支持 match
查询 中描述的minimum_should_match
和 operator
参数,将设置应用于构造的 bool
查询。
在大多数情况下,构造的 bool
查询中的子句数将是通过分析查询文本产生的词项数。
fuzziness
、prefix_length
、max_expansions
、fuzzy_transpositions
和 fuzzy_rewrite
参数可以应用于除了最后一个词项之外的所有词项构建的 term
子查询。
它们对为最后一个词项构建的 prefix 查询没有任何影响。