你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
发现
分享
文章
活动
登录
我刚打酱油去了,不好意思
请教一下关于字段分词器的问题
Elasticsearch
| 作者
River
| 发布于2019年09月26日 | 阅读数:
1617
分享到:
QQ空间
新浪微博
微信
QQ好友
印象笔记
有道云笔记
在定义name字段时,我分别定义了:"analyzer": "keyword" 和 "search_analyzer": "ik_max_word",添加了两个doc 值分别为:name = River 和 name = 张三,最后执行查询时,River 这个英文name查询不到,张三 是可以查到,请问这是什么原因呢?
没有找到相关结果
已邀请:
与内容相关的链接
提交
3 个回复
River
赞同来自:
结构和查询结果如图,是索引分词器和查询分词器在中英文上分词不一样产生了冲突的原因?希望能有大佬帮忙解答一下,小白一枚,正在跟着文档学习,谢谢。
River
赞同来自:
这是一个无人区了么 ?!
doom
赞同来自:
analyzer分词器这么写;使用ik_max_word;
"name":{
"type": "text",
"index": true,
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
结果
这个问题出在分词器对大小写上: ik_max_word和ik_smart,都会将英文字母转换为小写;然而keyword不转换,所以analyzer用keyword分词后,River会存为River,然后search_analyzer是ik_max_word查询的时候是先将River,转换为river然后去查询,所以没有匹配的结果。
在添加测试用例:存入name为小写的river,然后
GET /userinfo/_search
{
"query": {
"match": {
"name": "River"
}
}
}
搜索;此时就可以搜索到;所以,处理这个问题,换分词器:
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
存储的时候最大化的分词,查询的时候就不对获取字段最大化分词;
要回复问题请先
登录
或
注册
发起人
River
活动推荐
Jun
17
搜索客 Meetup 讲师招募(长期有效)
线上
·
6-17 周一
·
进行中
May
15
Workshop | 搜索服务统一治理(跨引擎多个集群监控管理、流量管控、服务编排)
北京
·
5-15 周四
·
报名中
May
16
2025XCOPS智能运维管理人年会
广州
·
5-16 周五
·
报名中
May
29
Workshop | Coco AI - 开源智能搜索与知识库管理
北京
·
5-29 周四
·
报名中
Jun
28
第26届 GOPS 全球运维大会暨研运数智化技术峰会 · 北京站
北京
·
6-28 周六
·
报名中
相关问题
这个问题有点难?
怎么解决elasticsearch集群占用太多虚拟内存(VIRT)的问题?占用了几十个G,有什么可以对它进行限制的相关设置吗?
集群稳定性的一些问题(一定量数据后集群变得迟钝)
elasticsearch functionScoreQuery scriptFunction效率问题
除了设置mapping为not analyzied,还有其他方法让一个string字段不分词吗?
请教elasticsearch出现unassigned shards根本原因
elasticsearch 中的store 以及倒排索引的问题
logstash获取时间的问题
索引某个shard无法恢复的问题
Elasticsearch查询时指定分词器
es scroll查询全部数据问题
问题状态
最新活动:
2019-09-27 11:37
浏览:
1617
关注:
2
人
3 个回复
River
赞同来自:
River
赞同来自:
doom
赞同来自:
"name":{
"type": "text",
"index": true,
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
结果
这个问题出在分词器对大小写上: ik_max_word和ik_smart,都会将英文字母转换为小写;然而keyword不转换,所以analyzer用keyword分词后,River会存为River,然后search_analyzer是ik_max_word查询的时候是先将River,转换为river然后去查询,所以没有匹配的结果。
在添加测试用例:存入name为小写的river,然后
GET /userinfo/_search
{
"query": {
"match": {
"name": "River"
}
}
}
搜索;此时就可以搜索到;所以,处理这个问题,换分词器:
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
存储的时候最大化的分词,查询的时候就不对获取字段最大化分词;