本文推荐给需要对ElasticSearch进行进一步学习了解的同学,用来发挥es更强大的功能哦。本文内容并不是完整入门,建议对es有基本认识后再看哦。
ElasticSearch 官方文档(能读懂的话,官方的才是最好的)
https://www.elastic.co/guide/cn/elasticsearch/guide/current/getting-started.html
ElasticSearch 基本搜索类型(Query)
term
term 查询某个字段里是否包含有某个关键词的文档。
term 搜索会忽略分词器(意味着搜索值不会进行分词),直接将搜索值在倒排索引中进行匹配,这种查询适合keyword,numeric,date等类型,适合精确查询。
terms
terms 是term搜索的多参数版本,支持多个值匹配。
match
match 查询会将搜索值进行分词,然后再进行查询,适合分词匹配模糊查询。
match_all
match_all 查询所有文档。
mutil_match
mutil_match 相当于 match 的多值匹配,可以同时对多个字段进行一个搜索值的匹配。
match_phrase
match_phrase 短语匹配查询,查询分词后的短语,允许有词间隔,要完全匹配。
match_phrase_prefix
match_phrase_prefix 前缀匹配查询
range
range 范围查询,相当于sql中的 between and
wildcard
wildcard 通配符查询,* 代表0或多个字符,? 代表任意一个字符。
fuzzy
fuzzy 模糊查询,性能差,和sql中的like还是有些区别的,使用‘chagge’可以模糊查询到‘changge’,具体使用场景自行体会吧。
ElasticSearch 搜索类型(Filter)
filter 过滤查询是不计算相关性的(简单理解就是不计算_score),同时可以缓存,因此,filter的查询速度要快于query。
filter和query的区别:filter 返回是和条件匹配的一个简单的列表这是很快可以计算得到的并且也很容易在内存中做缓存;query不仅要找到匹配的文档,而且还要计算每个文档的相关性(评分)。
exists
exists 排除为null字段,指定的字段必须非空。
bool查询
bool 组合查询可以实现组合过滤以及基本查询条件。
must
must must内搜索条件必须全部满足,类似sql中的 and 。
must_not
must_not 必须不满足的,类似sql中的 <> (不等于)。
should
should 条件满足不满足均可,主要用来计算相关性。
[must] [must_not] [should] 属于组合查询是可以结合query和filter查询来使用的(结合使用十分强大,请发挥你的想象力),同时bool也可以嵌套。