sgsg
(Sgsg)
October 11, 2016, 8:50am
1
対象は複数ノードからなる分散型の検索システムで、インデックスサイズが2テラ程度、
シャーディングの設定も行っていますが、インデックスから一部のドキュメントだけ削除しようと
以下のコマンドを実行したところ、
コマンド
curl -s -XPOST localhost:9200/_bulk --data-binary @json_file
json_file
{ "delete" : { "_index" : "index", "_type" : "type", "_id" : "1" } }
以下のようなメッセージがあがり、削除できませんでした。
{
"took" : 120008,
"errors" : true,
"items" : [ {
"delete" : {
"_index" : "index",
"_type" : "type",
"_id" : "1",
"status" : 404,
"error" : "RemoteTransportException[[A1][inet[/10.10.10.10:9200]][indices:data/write/bulk[s]]]; nested: EngineClosedException[[index][4] CurrentState[CLOSED] ]; "
}
} ]
}
また、curl -XGETでドキュメントを表示することは出来、全文検索も可能ですが、XDELETEが効きかず削除出来ません。
curl -DELETE http://locahost:9200/index/type/1
削除したいドキュメントサイズは40kバイト程度です。
インデックス内の他のドキュメントは削除可能なものもあり、すべてが削除できないわけではありません。
インデックス内の他のドキュメントは残し、このドキュメントだけを削除したいのですが、削除する方法を教えて頂ければ幸いです。
ちなみに、Elasticsearch バージョン1.7.1 を使用しています。
よろしくお願いいたします。
johtani
(Jun Ohtani)
October 13, 2016, 8:01am
2
実行時間の前後にElasticsearchのログに何かエラーなどは出ていないでしょうか?
sgsg
(Sgsg)
October 14, 2016, 5:12am
3
大谷様
お世話になります。
ご多用の中、ご連絡頂き、ありがとうございました。
クラスタを再確認したところ、HDDの残容量がゼロになっていた為、ログへ書き込みが出来ず、ドキュメントを削除出来なかったようです。
不要なログファイルを削除後、ドキュメントを削除出来、問題が解消されました。
確認不足で、申し訳ございませんでした。
今回クラスタを確認して気づいた点として、クラスタ内マシンのHDD残容量にバラつきがあることでした。
構築直後はほぼ均等にシャードが割り当てられていたのですが、運用過程で(ドキュメントを検索、追加、削除したり、停電によるマシン起動・停止等)
マシン毎にシャードが複数載っていたり、まったく載っていなかったりしたり(マシン2)、マシンの残容量も点線以下の通りバラつきがあり、
例えば、マシン2,7は残容量が非常に少ないのに、マシン12は 110G となっています。
設定等により、均等にデータを割り振ることは可能でしょうか?
たとえば、マシン2,7、12をクラスタから外し、この3つで新たにクラスタを作成し、均等に割り振られた段階で、元のクラスタに戻すことなど可能でしょうか。
ご多用のところ、大変恐れ入りますがご教示頂けますと助かります。
よろしくお願い致します。
クラスタの構成(HDD: 300G)、()内シャードの数
各マシンの残容量は以下の通りでした。
マシン1(3個): 18G
マシン2(0個): 0.1G
マシン3(2個): 13G
マシン4(3個): 19G
マシン5(2個): 10G
マシン6(1個): 3G
マシン7(2個): 0.1G
マシン8(3個): 42G
マシン9(2個): 46G
マシン10(3個): 30G
マシン11(2個): 56G
マシン12(2個): 110G
マシン13(2個): 94G
マシン14(1個): 63G
全マシン設定
node.master: true
node.data: true
script.groovy.sandbox.enabled: false
http.max_initial_line_length: 100k
johtani
(Jun Ohtani)
October 14, 2016, 6:56am
4
Disk-based Shard Allocation と言う機能があり、それが作動したために、シャードの偏りが出ているはずです。(ログに何か出ているかと。)
空き容量を作っていただければ、そのうちバランスが取れるはずです。
また、一応、Cluster Reroute を使えば明示的に自分で動かすことも可能です。
sgsg
(Sgsg)
October 14, 2016, 8:43am
5
大谷様
ご教授頂き、ありがとうございました。
勉強になりました。色々試してみたいと思います。
ありがとうございました。