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" : [ |