elasticsearch6.4.0
インデックスから条件に該当するデータを_delete_by_queryで削除し削除して確保できるであろうストレージを利用したいと考えています。
実際に試したところ、_delete_by_query実行前と実行後で
kibana->Management-> Index managementで参照できる
インデックスのPrimary Storage Sizeが下がるものだと思っていましたが、変化しません。
どこかで_delete_by_queryは削除マークを付けただけ(論理削除)という説明を見ました。
削除マークを付けたレコードに対してストレージから削除指示するにはどのような操作(クエリ)を実行したらよいかご教授いただけますでしょうか。
tsgkdt
(tsgkdt)
October 15, 2020, 1:30pm
2
即座にディスクを空けたいということでしたらば、forcemergeが使えるかもしれません。
also frees up the space used by deleted documents. Merging normally happens automatically, but sometimes it is useful to trigger a merge manually.
ここで、削除されたドキュメントのスペースを空けるとあり、
マージは通常自動的に行われるが、手動でやるときに役立つとあります。
今回、即座に空けたいということであれば、このAPIが使えるのではと思いました。
(参考) 類似の問い合わせ
elasticsearch
ご参考になれば幸いです。
1 Like
tsgkdtさん
ありがとうございます。
返信遅れましたが、提示いただいたAPIで削除してストレージが解放されることが確認できました。
ありがとうございます。
あと実行したときの挙動だけこの場で共有させていただくと
・DELETE_BY_QUERY実行時、一時的にストレージが圧迫される
・(マシンスペック等によるかと思いますが)約4000万ドキュメントを削除する際、QUERYで約2日、ForceMergeで約半日程度かかりました。
system
(system)
Closed
November 16, 2020, 8:12am
4
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.