关于Elasticsearch检索

通过kibana给elasticsearch保存数据时。ES默认分词器会对保存的每一个type的每一个field的值进行分词,

-----------------------------------------------------------------------------------------------------------------------------------------

如果是汉字,则就默认把汉字字符串按照每一个汉字进行分词,

如果是纯英文【如:dasdasdasdad  dasdasd】则就按照空格进行分词,没有空格就不分词。

如果是英文+汉字:按照空格,汉字逐一分词,例如:wang    luwa娃wa    娃娃w娃娃我a娃,

分词后结果是:词组1:wang,词组2:luwa,词组3:娃,词组4:wa,词组5:w,词组6:我,词组7:a

-----------------------------------------------------------------------------------------------------------------------------------------

常用检索方式:

term:精准查询,如果field的值是汉字,因为已经分词了,则用term检索就检索不到。

match_all:检索索引里的所有type。

match:如果检索的关键字是汉字字符串,通过分词器也会把检索字符串进行分词,再在指定的field里进行匹

配,field的值只要满足其中的一个分词即可。同理:英文是按照空格进行分析的。

match_phrase:是短语查询,可以检索满足当前短语的field对应的doc,不限制短语起始位置,只要匹配上即可。

match_phrase_prefix:支持短语前缀查询,使用场景:比如输入完一个短语:苹果 w,在输入完 “苹果” 时,检

索出与“苹果”相关的field对应的doc,再输入 “w” ,那么就会在检索出“苹果”对应field值中再检索下一个以w开头的

短语的field对应的type。

-----------------------------------------------------------------------------------------------------------------------------------------

查询某个索引下的某个type下的某一个doc的某一个field的分词情况语句是:

GET /index/type/id/_termvectors?fields=field

posted @ 2019-07-18 18:09  Soren  阅读(130)  评论(0)    收藏  举报