Elasticsearchは初めてですか?Elasticsearchを使い始めるウェビナーに参加しましょう。無料のクラウドトライアルを始めるか、今すぐマシンでElasticを試すこともできます。
Elasticsearch では、ドキュメントからフィールドを削除することが一般的な要件です。これは、インデックスから不要な情報や古い情報を削除する場合に役立ちます。この記事では、Elasticsearch 内のドキュメントからフィールドを削除するさまざまな方法を、例と手順とともに説明します。
方法1: Update APIを使用する
Update APIを使用すると、ドキュメントのソースを変更するスクリプトを提供することでドキュメントを更新できます。このAPIを使用して、フィールドをnullに設定して、ドキュメントからフィールドを削除できます。以下はその手順のステップ別のガイドです。
1. 更新するドキュメントのインデックス、ドキュメント タイプ (Elasticsearch 6.x 以前を使用している場合)、およびドキュメント ID を特定します。
2. フィールドを null に設定するスクリプト、またはソース ドキュメントからフィールドを削除するスクリプトで Update API を使用します。次の例は、「my_index」インデックス内の ID「1」のドキュメントから「field_to_delete」フィールドを削除する方法を示しています。
3. リクエストを実行します。成功した場合、Elasticsearch はドキュメントが更新されたことを示す応答を返します。
注: このメソッドは、指定されたドキュメントからフィールドのみを削除します。フィールドはマッピングおよびインデックス内の他のドキュメントに引き続き存在します。
方法2:変更されたソースでの再インデックス
インデックス内のすべてのドキュメントからフィールドを削除したい場合、Reindex APIを使用して、変更されたソースで新しいインデックスを作成できます。方法は以下の通りです。
1. 元のインデックスと同じ設定とマッピングを持つ新しいインデックスを作成します。Get Index API を使用して、元のインデックスの設定とマッピングを取得できます。
2. Reindex API を使用して、ソースからフィールドを削除しながら、元のインデックスから新しいインデックスにドキュメントをコピーします。次の例は、「my_index」インデックス内のすべてのドキュメントから「field_to_delete」フィールドを削除する方法を示しています。
3. 新しいインデックスに、フィールドが削除された正しいドキュメントが含まれていることを確認します。
4. すべてが問題なければ、元のインデックスを削除し、必要に応じて、元のインデックス名を持つエイリアスを新しいインデックスに追加できます。
方法3:マッピングの更新と再インデックス
マッピングからフィールドとインデックス内のすべてのドキュメントを削除する場合は、マッピングを更新してからドキュメントのインデックスを再作成できます。やり方は次のとおりです:
1. 元のインデックスと同じ設定で新しいインデックスを作成します。
2. Get Mapping API を使用して、元のインデックスのマッピングを取得します。
3. 削除するフィールドを削除してマッピングを変更します。
4. Put Mapping API を使用して、変更したマッピングを新しいインデックスに適用します。
5. 方法 2 の説明に従って、Reindex API を使用して、元のインデックスから新しいインデックスにドキュメントをコピーします。
6. 新しいインデックスに、フィールドが削除された正しいドキュメントが含まれていること、およびマッピングにフィールドが存在しないことを確認します。
7. 問題がなければ元のインデックスを削除し、必要に応じて元のインデックス名でエイリアスを追加できます。
まとめ
この記事では、Elasticsearch のドキュメントからフィールドを削除する 3 つの方法 (Update API の使用、変更されたソースによる再インデックス、マッピングの更新と再インデックス) について説明しました。それぞれの方法には独自の使用例とトレードオフがあるため、要件に最も適したものを選択してください。変更を本番環境に適用する前に、必ず変更をテストし、結果を確認してください。
よくあるご質問
Update APIとは何ですか?
ドキュメントのソースを変更する(フィールドをnullに設定したり削除したりするなど)スクリプトを提供することで、ドキュメントを更新できるAPI。
Reindex APIとは何ですか?
移行中にソースを変更しながら(フィールドの削除など)、元のインデックスから新しい宛先インデックスにドキュメントをコピーするために使用される API。
マッピングとは?
これはインデックスの定義済み構造です。インデックスからフィールドを完全に削除するには、フィールドを削除して再度インデックスを作成し、マッピングを変更する必要があります。
Elasticsearchドキュメントのフィールドを削除する利点は何ですか?
Elasticsearchドキュメントのフィールドの削除は、インデックスから不要または古い情報を削除する場合に便利です。




