需求:给定一个list,多个词语,快速返回每个词语所在doc的detail字段的个数,如果是查一个词语,可以通过模糊匹配的方式进行查询
GET index/_search?size=0 { "query":{ "bool":{ "should":[ { "wildcard":{ "detail":"*齐齐哈尔医学院附属第三医院*" } } ] } }, "aggs" : { } }
可惜list里有几十个词语,并且wildcard模糊匹配的销量很低,这个时候我们就可以使用分词的方式进行精准查询
先进行添加分词器mapping
_mapping { "properties" : { "detail" : { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } }
-
text类型:会分词,先把对象进行分词处理,然后再再存入到es中。
当使用多个单词进行查询的时候,当然查不到已经分词过的内容! -
keyword:不分词,没有把es中的对象进行分词处理,而是存入了整个对象!
这时候当然可以进行完整地查询!默认是256个字符! -
ik_max_word和ik_smart,两个不同的分词规则,一个细粒度一个粗粒度,可以自己尝试
GET _analyze { "analyzer": "ik_smart", "text": "两个不同的分词规则,一个细粒度一个粗粒度,可以自己尝试" }
最后查询
GET index/_search?size=0 { "aggs":{ "messages":{ "filters":{ "filters":{ "鼻咽癌肝转移":{ "term":{ "detail":"鼻咽癌肝转移" } }, "龙山县人民医院":{ "term":{ "detail":"龙山县人民医院" } }, "支付宝":{ "term":{ "detail":"支付宝" } }, "错过就没":{ "term":{ "detail":"错过就没" } }, "截止时间":{ "term":{ "detail":"截止时间" } } } } } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)