ElasticSearch C#NEST - 如何防止覆盖文档

时间:2017-02-21 20:47:40

标签: c# elasticsearch nest

当我执行索引呼叫时,如果已存在具有相同ID的文档,是否有办法使呼叫失败?

我看到发出警告,但原始文件仍然被覆盖。

1 个答案:

答案 0 :(得分:1)

您可以使用_create端点或在索引文档时指定OpType.Create来实现此目的

var client = new ElasticClient();

// using OpType.Create
client.Index(new Test { Id = 1, Message = "message 1" }, i => i
    .OpType(OpType.Create)
);

// using _create endpoint
client.Create(new Test { Id = 1, Message = "message 1" });

如果文档已存在,将返回HTTP 409 Conflict响应。在这两种情况下,您都需要一个用于索引/创建的文档的ID。