Term
term query
会去倒排索引中寻找确切的term
,它并不知道分词器的存在,这种查询适合keyword
、numeric
、date
等明确值的
term:查询某个字段里含有某个关键词的文档
1 | GET test_search_index/_search |
返回结果
1 | "hits" : [ |
发现,username
里有关alfred
的关键字都查出来了,但是我只想精确匹配alfred way
这个,按照下面的写法看看能不能查出来:
1 | GET test_search_index/_search |
执行发现无数据,从概念上看,term
属于精确匹配,只能查单个词。我想用term
匹配多个词怎么做?可以使用terms来:
1 | GET test_search_index/_search |
发现全部查询出来,为什么?因为terms
里的[ ]
多个是或者的关系,只要满足其中一个词就可以。想要通知满足两个词的话,就得使用在search api那篇中提到的bool
查询来做了
match查询:
match query 知道分词器的存在,会对field进行分词操作,然后再查询
1 | GET test_search_index/_search |
match_all:查询所有文档
{ “match_all”: {}} 匹配所有的, 当不给查询条件时,默认。
1 | GET test_search_index/_search |
_score
随boost值改变而改变:
multi_match:可以指定多个字段
1 | GET test_search_index/_search |
返回结果:
1 | "hits" : [ |