自己寫的一個elasticsearch的reindex工具


寫在前面:從Elasticsearch v2.3.0開始, reindex api被引入。它能夠對文檔重建索引而不需要任何插件或外部工具。

 

傳送門:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/docs-reindex.html

 

最近一直在研究es的分詞插件,因為es的特殊機制,如果我需要給字段換分詞方式的時候需要重新建一個索引然后重新索引數據,又因為公司現在還用的是1.4.5版本的elasticsearch,所以reindex的api是無法使用的,只能自己寫一個reindex工具了。

 

程序的原理很簡單,就是把是原es庫中的數據取出來然后把數據再index到新的es庫中。代碼也很少,但是有一個字段校驗的機制,是為了防止原來庫里的數據和現在庫不一樣做的(如果是reindex的話其實應該不會不一樣的,但是萬一有錯呢。。。)

 

踩過的坑:

 

1.Scroll()參數問題,這個方法里有兩個參數,一個是time,一個是scrollid,我一直不知道那個time是干嗎用的(因為在search()里定義request的時候scroll已經賦過一次time了),看資料他寫的也不是很通俗易懂,后來在一個網站上查到了,因為之前我在request里寫過一次所以以為那個持續時間是第一次就定義好的,其實不是的你每次執行scroll的時候都會重新給scrollid的scroll定義持續時間,所以那個時間是你每次調用scroll的時候就會刷新的。

 

2.如果原庫里有字段是隱藏的或者讀不到的一定要注意,這種字段在讀的時候是讀不到的,所以要在索引的時候重新賦值,這個很坑,一定要注意!避免花了好長時間導入到新庫里才發現可能要的字段沒有值(別問我為什么知道,都是血和淚的教訓。。)

 

最后給大家發一下代碼地址:https://github.com/123Jun321/EsReIndexTool---

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM