关于elasticsearch属性not_analyzed,坑

问题描述:实际使用过程中使用aggregations统计的时候,中文莫名其妙拆分成一个字一个字

插入数据如下,对label统计的时候,就变成了“美”、“式”单个字:

"title" : "这是test",
 "label" : [
            "美式",
            "沙发"
          ],
 "create_date" : "2017-11-1 15:41:01"

思路来源文章:Elasticsearch 的坑爹事——记录一次mapping field修改过程


解决办法:删了重新创建,一开始就把属性初始好

curl -XPUT http://127.0.0.1:9200/test -d '{"mappings" : {"kind" : {"properties" : {"id" : {"type" : "string"},"label" : {"type" : "string","index": "not_analyzed"}}}}}'


但是设置了not_analyzed后,搜索的时候就不行了(因为没有进行分词,所以理解为精确查找)………………尴尬

为了达到搜索和统计的目的——我的解决思路:

建立两个存储一模一样数据的字段,一个用于检索(默认"index": "analyzed"),一个用于统计(这个字段设置为"index": "not_analyzed")

curl -XPUT http://139.16.110.110:9200/portal -d '{"mappings" : {"product" : {"properties" : {"id" : {"type" : "string"},"label" : {"type" : "string"},"label_recom" : {"type" : "string","index": "not_analyzed"}}}}}'










你可能感兴趣的:(elasticsearch)