解决elasticsearch5.x中IK分词幸运飞艇源码出售不能用的问题

一、概述
环境:elasticsearch版本5.6.3,Springboot 2.0.2.RELEASE,索引myIndex

问题描述:使用@Field注解给幸运飞艇源码出售QQ2952777280【话仙源码论坛】hxforum.com 实体类指定ik分词解析器(ik_smart/ik_max_word),测试分词功能,发现并不能达到预期的效果,查看mapping,并没有自动生成ik配置。

二、解决方案
由于elasticsearch索引一旦建立,就无法动态修改其字段的映射类型,为了不影响线上的访问,需要无缝切换到新的索引上。使用 elasticsearch 提供的 reindex api 来迁移数据,创建新的索引

  1. 创建新的索引
    PUT /myIndex_v2

  2. 设置新索引的mapping
    PUT /myIndex_v2/_mapping/myIndex_v2

{
  "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_smart",
      "search_analyzer": "ik_smart",
      "fields": {
        "keyword": {
        "type": "keyword",
        "ignore_above": 256
        }
      }
    },
    "content": {
      "type": "text",
      "fields": {
        "keyword": {
        "type": "keyword",
        "ignore_above": 256
        }
      }
    },
    "createTime": {
      "type": "long"
    }
  }
}
  

  1. 同步数据
    使用 reindex 将原来的索引重建到新的索引上

POST /_reindex

{
"source": {
"index": "myIndex"
},
"dest": {
"index": "myIndex_v2"
}
}
  

  1. 查看数据是否已同步到新的索引上
    GET /myIndex_v2/_search

  2. 使用别名,切换索引(同时删除原索引myIndex)
    POST /_aliases

{
"actions": [
{
"add": {
"index": "myIndex_v2",
"alias": "myIndex"
}
},
{
"remove_index": {
"index": "myIndex"
}
}
]
}
  大功告成,现在可以同时使用myIndex和myIndex_v2搜索数据

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章