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 の使用、変更されたソースによる再インデックス、マッピングの更新と再インデックス) について説明しました。それぞれの方法には独自の使用例とトレードオフがあるため、要件に最も適したものを選択してください。変更を本番環境に適用する前に、必ず変更をテストし、結果を確認してください。




