ELK,萌萌哒

Elasticsearch从2.x升级到5.x之后IK插件问题

Elasticsearch | 作者 LittleMagic | 发布于2018年03月25日 | 阅读数:4275

按照官方指南将ES从2.3.2升级到5.6.4之后, 原有的索引index无法打开, 提示:
{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"analyzer [ik] not found for field [xxx]"}]......
应该是IK插件升级后, 取消了名为ik的分词器, 新增了ik_smart和ik_max_word导致的.
 
于是打算新建一个索引index_new, 指定新的mapping, 然后将原来索引index的数据通过reindex API导入. 但是现在index根本打不开, 因此也没办法导入. 
 
求问这种情况下有什么好的解决办法? 可以将分词器也设置别名么? 或者有不打开index而迁移数据的方法?
 
跪谢
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

ES5.X较2.X的分词做了调整,你已经提及:分为ik_smart和ik_max_word;
同时ES5.X的字符串类型按照是否需要分词分为:text和keyword。
理论上,你建立好新的Mapping(设置好ik分词),然后通过reindex可以了,我看你提及索引打不开的问题。
实在不行:
1、借助第三方工具导入:https://blog.csdn.net/laoyang3 ... 49407
2、写程序解析原来的2.X版本的数据,然后导入ES5.X。
 

medcl - 今晚打老虎。

赞同来自:

自定义一个 analyzer,新的analyzer名称设置为 ik,tokenizer 的 type 设置为 ​ik_max_word 即可。
PUT your_index
{
"settings": {
"analysis": {
"analyzer": {
"ik": {
"type": "custom",
"tokenizer": "ik_max_word"
}
}
}
}
}

要回复问题请先登录注册