解決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搜索數據

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