1

我正在实现一个重新索引操作,该操作从某个集合中获取所有元素并将它们添加到索引中,替换索引的旧内容(或创建的索引,如果它是空的)。为了实现这一点,我使用了 Elasticsearch 批量查询,我使用 Elasticsearch.net Bulk 函数调用它。

我已成功将元素添加到索引/使用所有元素创建新索引,但我似乎无法找出如何在批量查询中删除整个索引,以确保没有旧内容留在里面的物品。我可以通过另一个调用来做到这一点,但这意味着如果我删除索引然后重新创建它时失败,我将没有索引,而我猜,如果在批量查询中出现索引失败,那么索引将不会t 被删除。

这就是我现在的批量索引(并且有效):

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之前但无济于事。有没有办法在添加元素之前批量删除索引?

4

0 回答 0