特定のインデックスタイプのすべてのドキュメントを交換したいのですが。私はこれをデータベーストランザクションのように考えています。
- タイプ内のすべてのドキュメントを削除します
- 新しいドキュメントを作成する
- コミット
これはElasticSearchのバルクAPIで可能であるようですが、より直接的な方法はありますか?
回答:
回答№1は2次の声明に基づいて、 elasticsearchクエリAPIドキュメントによる削除:
クエリによる削除は、バージョン管理のサポートをバイパスします。また、「インデックス内のデータの大きな塊」を何度も削除することはお勧めしません。新しいインデックスに単純に再インデックスすることをお勧めします。
あなたは全体を削除することを再検討したいかもしれませんタイプし、同じインデックスからそれらを再作成します。このステートメントが示唆するように、単純にインデックスを再作成する方が良いです。実際、メーカー製品のインデックスがあり、メーカーが製品の更新リストを送信すると、新しいデータを永続ストアにロードし、インデックス全体を完全に再構築するシナリオがあります。私はの使用を実装しました インデックスエイリアス 使用されている実際のインデックスをマスクできるようにします。 製品の変更が発生すると、バックグラウンドで新しいインデックスを再構築するプロセスが開始され(現在は約15分かかります)、データの読み込みが完了して古いインデックスを削除すると、エイリアスが新しいインデックスに切り替わります。そのため、これは完全にシームレスであり、ユーザーのダウンタイムは発生しません。