我的数据是关联数据库的,刚入坑用的自带的分词,所有的中文都会被分成单个。很不好用
而更换IK分词器后,发现不生效,百度后是 没有建立 索引(mapping)。所以想要进行更换,结果在创建的时候,报冲突错误。
本来想整个报错图给你们看下,找不到了。直接解决错误吧
在数据已有的情况下,再次导入是一个不合适的方法,而我们想要更新mapping就会有冲突,解决思路就是,新建一个索引库,然后数据同步过去,再删除原有的。本以为会很难,结果很简单
1:建立新的索引
PUT myindex
2:新建索引结构
POST myindex/_mapping
{
"properties": {
"content":{
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"index_options": "docs"
},
"title":{
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"index_options": "docs"
}
}
}
3:数据替换
POST _reindex
{
"source": {
"index":"index"
},
"dest": {
"index": "myindex"
}
}
4. 查看数据是否已同步到新的索引上
GET /myindex/_search
至此数据索引替换完成。在替换索引之前的入库粒度还是按照原有的单个中文,但是查询时会按照IK分词器的,所以可以正常使用