特定のセットからすべての要素を取得してインデックスに追加し、インデックスの古いコンテンツを置き換えます (空の場合はインデックスを作成します)。これを実現するために、Elasticsearch.net Bulk 関数で呼び出す Elasticsearch バルク クエリを使用します。
インデックスに要素を追加する/すべての要素を含む新しいインデックスを作成することに成功しましたが、古いコンテンツがないことを確認するために、一括クエリでインデックス全体を削除する方法を見つけることができないようですその中に残っているアイテム。別の呼び出しでそれを行うこともできますが、これは、インデックスを削除してから再作成に失敗した場合、インデックスが残っていないことを意味しますが、一括クエリで失敗した場合、インデックスは「削除されません。
これは、現在、一括インデックス作成のために持っているものです(そして機能します):
foreach (var element in elements)
{
sb.AppendLine("{ \"index\" : { \"_id\" : \"" + element.Id + "\" } }");
sb.AppendLine(JsonConvert.SerializeObject(element.As<ElementDTO>(), new JsonSerializerSettings() { Formatting = Newtonsoft.Json.Formatting.None }));
}
var response = client.Bulk("elements", "element", sb.ToString());
私は追加しようとしました:
sb.AppendLine("{ \"delete\" : { \"_index\" : \"elements\" } }");
また:
sb.AppendLine("{ \"delete\" }");
foreachの前ですが、役に立ちません。要素を追加する前にインデックスを一括で削除する方法はありますか?