赞
踩
问题:
es里面有一个字段存储的数据类似 A、B、H这种大写字母,通过term查询不到数据,但是根据match可以查到,后来发现是因为es字段类型设置的问题,因为设置了该字段类型为text类型,导致es对存储的数据建立了分词索引,大写字母都转成小写了,把类型改为keyword就可以了
设置mapping 字段映射
- "fieldName": {
- "type": "keyword"
- }
注意问题
1. 通过es提供的测试分词的接口,我们可以测试各字段的分词情况
- get http:/ip/索引名称/_analyze
-
- {
- "field":"firtname", #要进行分析的索引中的字段
- "text":"DNF" #要进行分析的文本内容
- }
2. ES 字段类型keyword和text的区别和选择
- keyword:存储数据时候,不会分词建立索引
-
- text:存储数据时候,会自动分词,并生成索引
创建es索引是最好先设置好每个字段的类型和使用的分词索引,如果不需要分词查询,设置字段类型为keyword最好,例如商品id、编号之类的;
如果需要分词查询,就设置为text类型,并且指定分词器,例如商品名称、商品标签、关键字等等;
设置字段类型和使用的分词器:
- "fieldName": {
- "type": "text", #字段类型为text
- "analyzer":"ik_max_word" #ik中文分词器
- }
注意:设置字段类型为text后,es建立的分词索引会把大写字母转换为小写,通过term精确匹配就匹配不到
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。