匹配布尔前缀查询
编辑匹配布尔前缀查询
编辑match_bool_prefix
查询会分析其输入,并根据词项构造一个 bool
查询。除了最后一个词项外,每个词项都在 term
查询中使用。最后一个词项在 prefix
查询中使用。例如,一个 match_bool_prefix
查询:
resp = client.search( query={ "match_bool_prefix": { "message": "quick brown f" } }, ) print(resp)
response = client.search( body: { query: { match_bool_prefix: { message: 'quick brown f' } } } ) puts response
const response = await client.search({ query: { match_bool_prefix: { message: "quick brown f", }, }, }); console.log(response);
GET /_search { "query": { "match_bool_prefix" : { "message" : "quick brown f" } } }
其中分析产生词项 quick
、brown
和 f
,它类似于以下 bool
查询:
resp = client.search( query={ "bool": { "should": [ { "term": { "message": "quick" } }, { "term": { "message": "brown" } }, { "prefix": { "message": "f" } } ] } }, ) print(resp)
response = client.search( body: { query: { bool: { should: [ { term: { message: 'quick' } }, { term: { message: 'brown' } }, { prefix: { message: 'f' } } ] } } } ) puts response
const response = await client.search({ query: { bool: { should: [ { term: { message: "quick", }, }, { term: { message: "brown", }, }, { prefix: { message: "f", }, }, ], }, }, }); console.log(response);
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
参数配置不同的搜索分析器:
resp = client.search( query={ "match_bool_prefix": { "message": { "query": "quick brown f", "analyzer": "keyword" } } }, ) print(resp)
response = client.search( body: { query: { match_bool_prefix: { message: { query: 'quick brown f', analyzer: 'keyword' } } } } ) puts response
const response = await client.search({ query: { match_bool_prefix: { message: { query: "quick brown f", analyzer: "keyword", }, }, }, }); console.log(response);
GET /_search { "query": { "match_bool_prefix": { "message": { "query": "quick brown f", "analyzer": "keyword" } } } }
match_bool_prefix
查询支持 minimum_should_match
和 operator
参数,如 match
查询中所述,将设置应用于构造的 bool
查询。在大多数情况下,构造的 bool
查询中的子句数量将是查询文本分析产生的词项数量。
fuzziness
、prefix_length
、max_expansions
、fuzzy_transpositions
和 fuzzy_rewrite
参数可以应用于为除最后一个词项之外的所有词项构造的 term
子查询。它们对为最后一个词项构造的前缀查询没有任何影响。