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

ElasticSearch C# NEST - How to prevent overwriting a document

当我执行 Index 调用时,如果已存在具有相同 ID 的文档,是否有办法使调用失败?

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

您可以通过使用 _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 冲突响应。在这两种情况下,您都需要一个您 indexing/creating.

的文档的 ID