您好,登錄后才能下訂單哦!
Elasticsearch中怎么對mapping進行修改,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
index:test_v1
type:item
alias:item_alias
mapping:
{ "properties": { "itemId": { "type": "long" }, "itemName": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } }
使用最新的mapping直接調用putMapping接口
PUT http://xxx.xxx.xxx.xxx:9200/goods_info/_mapping { "properties": { "itemId": { "type": "long" }, "itemName": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" }, "brandName": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } }
由于Elasticsearch底層使用了lucene的原因,不支持對mapping的修改,可使用索引重建的方式,步驟如下:
1,使用正確的mapping新建索引和類型
如需要將舊索引的itemId字段改為keyword類型,則執行以下請求:
創建index: PUT /test_v2 設置mapping: POST /test_v2/item/_mapping { "properties": { "itemId": { "type": "keyword" }, "itemName": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_smart" } } }
2,使用reindex api將舊索引數據導入新索引
索引重建后可使用reindex命令遷移數據,如將test_v1數據遷移至test_v2請求如下:
POST _reindex { "source": { "index": "test_v1", "type": "item" }, "dest": { "index": "test_v2", "type": "item" } }
3,為新索引添加別名
為索引添加別名后,在程序代碼中可以使用固定別名查詢動態的索引名稱,然后進行查詢,如此索引重建則不會引起程序的變動
添加別名請求: POST /_aliases { "actions": [ { "add": { "alias": "item_alias", "index": "test_v2" }} ] } 將舊索引別名遷移到新索引請求: POST /_aliases { "actions" : [ { "remove" : { "index" : "test_v1", "alias" : "item_alias" } }, { "add" : { "index" : "test_v2", "alias" : "item_alias" } } ] }
看完上述內容,你們掌握Elasticsearch中怎么對mapping進行修改的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。