elasticsearch indexのプライマリシャード数変更

 

目標

 

indexに一度決めたprimary shardは変更できない

でも、おれはいろんなシャードの数でパフォーマンスを測りたいなのだ。。

その時、elasticsearch-reindexing pluginを使うとシャード数を変更してデータを移行するのが可能だ

つまり1シャードを持っていたAというindexのデータを5シャードを持っているBというindexへ移行することができる

手順はとても簡単

 

設置

 /usr/share/elasticsearch/bin/plugin --install org.codelibs/elasticsearch-reindexing/1.3.0

 

プラグインの設置が終わったら必ずelasticsearchの再起動する

service elasticsearch restart

 

reindexing

 

インデックス作成(データ1行挿入)

このindexは5シャード0レプリカになっている

 [root@jmeter ~]#  curl http://localhost:9200/users -X POST -d "user[name]=postman" -d "user[age]=19"
{"acknowledged":true}[root@jmeter ~]#
データ確認
[root@jmeter ~]# curl -XGET http://localhost:9200/users/_search
{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":0,"max_score":null,"hits":[]}}[root@jmeter ~]#
reindexing
[root@jmeter ~]# curl -XPOST localhost:9200/kakauser/_reindex/users/?wait_for_completion=true
{"acknowledged":true}[root@jmeter ~]#

 

形式
localhost:9200 {from_index}/_reindex/{to_index}/

 

現在使っているindex(?)をreindexingの元にすると「エラー3」が出たが、

一回snapshotをしてそのデータをrestoreしたindexを利用してreindexingをかけたらうまく動いた

(restoreしてしばらく時間が経ってからreindexingをかけて成功)

headでみると以下のように移行中。

image

一所懸命移行中 6GB中2GB分コピーするのに30分以上かかってる。

これでいろんなシャード数を設定してパフォーマンスのチェックをすることができそう!

 

elastic search snapshot and restoreは以下のリンクを参考

http://blog.negabaro.com/4067.html

 

 

 

エラー1

curl -XPOST localhost:9200/elastic3/_reindex/elastic4/?wait_for_completion=true
{"error":"UnavailableShardsException[[elastic3][0] [2] shardIt, [0] active : Timeout waiting for [1m], request: index {[elastic3][_reindex][elastic4], source[_na_]}]","status":503}

さっそくエラーが出た

UnavailableShardsException shardIt, [0] active

elasticsearch再起動したら直った。。泣きたい

 

エラー2
[root@jmeter ~]# curl -XPOST localhost:9200/users/_reindex/kakauser/?wait_for_completion=true
{"error":"InvalidTypeNameException[mapping type name [_reindex] can't start with '_']","status":400}[root@jmeter ~]#

elasticsearch再起動したら直った。。泣きたい

 

エラー3

これからは再起動した後にも出たエラー

[root@jmeter ~]# curl -XPOST localhost:9200/elastic2/_reindex/elastic4/?wait_for_completion=true
{"error":"SearchPhaseExecutionException[Failed to execute phase [init_scan], all shards failed]","status":503}[root@jmeter ~]#

 

"error":"SearchPhaseExecutionException[Failed to execute phase [init_scan], all shards failed]"

はっきり言い切れないですが、elastic2のindexが現在書き込みが発生してるのが原因かと思う

検証してないが、indexをクローズして実行するとうまくいくと思う

 

http://elasticsearch-users.115913.n3.nabble.com/copy-index-td4064974.html

 

 

参考ページ:

https://github.com/karussell/elasticsearch-reindex

https://github.com/codelibs/elasticsearch-reindexing

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です