高级全文查询一般用于在全文字段(如电子邮件正文)上运行全文查询,它们了解如何分析被查询的字段,并将在执行以前将每一个字段的analyzer
(或search_analyzer
)应用到查询字符串。html
本组中的查询为:elasticsearch
match
querymatch_phrase
querymatch
查询,但用于匹配精确的短语或单词接近匹配。match_phrase_prefix
querymatch_phrase
查询相似,可是在最后一个单词上执行通配符搜索。multi_match
querymatch
查询的多字段版本。common
terms queryquery_string
querysimple_query_string
queryquery_string
语法的一个更简单、更健壮的版本,适合直接向用户公开。match
查询接受文本/数字/日期,分析它们并构造查询,例如:ide
GET /_search { "query": { "match" : { "message" : "this is a test" } } }
注意,message
是字段的名称,你能够替换为任何字段的名称。ui
match
查询是boolean
类型的,这意味着提供的文本被分析,而且分析过程从提供的文本构造一个布尔查询,operator
标志能够设置为or
或and
控制布尔子句(默认为or
),能够使用minimum_should_match
参数设置要匹配的可选should
子句的最小数量。this
能够设置analyzer
来控制哪一个分析器将对文本执行分析过程,它默认为字段显式映射定义或默认搜索分析器。code
lenient
参数能够设置为true
以忽略由数据类型不匹配引发的异常,例如尝试用文本查询字符串查询数值字段,默认值为false
。htm
fuzziness
容许基于被查询的字段类型进行模糊匹配,查看容许设置的模糊性。字符串
在这种状况下,能够设置prefix_length
和max_expansion
来控制模糊过程,若是设置了模糊选项,查询将使用top_terms_blended_freqs_${max_expansions}
做为其重写方法,fuzzy_rewrite
参数容许控制查询如何重写。get
模糊互换(ab
→ba
)在默认状况下都是容许的,但能够经过设置fuzzy_transpositions
为false
禁用。string
这里有一个提供额外参数的例子(注意结构的细微变化,message
是字段名):
GET /_search { "query": { "match" : { "message" : { "query" : "this is a test", "operator" : "and" } } } }