elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

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

ElasticSearch C#NEST-如何防止覆盖文档,c#,elasticsearch,nest,C#,elasticsearch,Nest,执行索引调用时,如果已经存在具有相同ID的文档,是否有方法使调用失败 我看到发出了警告,但原始文档仍被覆盖。您可以通过使用\u create端点,或在索引文档时指定OpType.create来实现这一点 var client = new ElasticClient(); // using OpType.Create client.Index(new Test { Id = 1, Message = "message 1" }, i => i .OpType(OpType.Crea

执行索引调用时,如果已经存在具有相同ID的文档,是否有方法使调用失败


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

您可以通过使用
\u 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冲突响应。在这两种情况下,您都需要索引/创建的文档的ID。

在否决票上添加注释会非常有帮助,这样我就知道问题出在哪里了。IndexMany是否有类似的内容,它会跳过已经存在的文档?不是跳过,而是返回409,是的
IndexMany
只是围绕
\u bulk
API的一种方便,它公开了批量创建、更新、索引和删除操作。查看不同操作示例的批量API测试: