2019独角兽企业重金招聘Python工程师标准>>>
术语查询匹配单个术语,因为它是:不分析值。
所以,它不必根据你索引的情况而降低。
如果您在索引时间提供Bennett并且未分析该值,则以下查询将不返回任何内容:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase如果为查询字段定义分析器,则查询将分析输入,并查找符合以下标准的文档:
>所有字词必须出现在字段中
>它们必须具有与输入值相同的顺序
例如,如果您索引以下文档(使用字段foo的标准分析器):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
此match_phrase查询将仅返回第一个和第二个文档:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string在默认情况下,在包含多个文本字段的文本的_all字段上查询搜索。最重要的是,它被解析并支持一些运算符(AND / OR …),通配符等(见related syntax)。
作为match_phrase查询,根据查询字段上设置的分析器分析输入。
取消链接match_phrase,分析后获得的术语不必按相同的顺序,除非用户已在输入中使用引号。
例如,使用与以前相同的文档,此查询将返回所有文档:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
但是此查询将返回与match_phrase查询相同的2个文档:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
关于这些查询的不同选项还有很多要说的,请查看相关文档:
> term
> match_phrase
> query_string
https://www.cnblogs.com/buxizhizhoum/p/9874703.html