データの変更編集

Elasticsearchは、ほぼリアルタイムでのデータの操作機能と検索機能を提供します。デフォルトでは、データのインデキシング/更新/削除時から検索結果に表示されるまで1秒の遅延(更新間隔)があります。これは、トランザクションが完了するとすぐにデータが利用可能になるSQLのような他のプラットフォームとの大きな違いです。

ドキュメントのインデキシング/置き換え編集

前に、1つのドキュメントにインデックスを付ける方法について説明しました。もう一度、そのコマンドを思い出してみましょう。

PUT /customer/external/1?pretty
{
  "name": "John Doe"
}

上記のコマンドは、"external"タイプでIDが1のcustomerインデックスに指定したドキュメントをインデキシングします。異なる(または同じ)ドキュメントで上記のコマンドを再び実行すると、Elasticsearchは、IDが1の既存のドキュメントの上に新しいドキュメントを置換(または再インデキシング)します。

PUT /customer/external/1?pretty
{
  "name": "Jane Doe"
}

上記のコマンドは、IDが1のドキュメントの名前を「John Doe」から「Jane Doe」に変更します。それに対して、異なるIDを使用すると、新しいドキュメントにインデックスが付けられ、インデックス内の既存のドキュメントはそのまま残ります。

PUT /customer/external/2?pretty
{
  "name": "Jane Doe"
}

上記のコマンドは、IDが2の新しいドキュメントにインデックスを付けます。

インデキシングの際、ID部分はオプションです。指定しない場合、ElasticsearchはランダムIDを生成し、そのIDを使用してドキュメントにインデックスを付けます。Elasticsearchが生成する実際のID(または前の例で明示的に指定したID)は、インデックスAPI呼び出しの一部として返されます。

次の例は、IDを明示せずにドキュメントにインデックスを付ける方法を示しています。

POST /customer/external?pretty
{
  "name": "Jane Doe"
}

上記の事例では、IDを指定しないので、PUTではなく`POST`動詞を使用していることに注意してください。