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

C# Nest 5.6-如何插入已存在id的文档?

C# Nest 5.6-如何插入已存在id的文档?,c#,elasticsearch,nest,C#,elasticsearch,Nest,我有以下代码: IIndexResponse response = elclient.Index(appointmentHistoryRecord, i => i.Index(OperaIndexName) .Type(appointmentHistoryRecord.GetType())

我有以下代码:

IIndexResponse response = elclient.Index(appointmentHistoryRecord, i => i.Index(OperaIndexName)
                                                                         .Type(appointmentHistoryRecord.GetType())
                                                                         .Id(appointmentHistoryRecord.AppointmentId.ToString())
                                                                         .Refresh(Refresh.False));
上面的代码工作得很好,但它的行为与我希望的不同。我试图完成的是插入一个id已经存在于索引中的文档。新文档将具有相同的id,但主体不同

我编写的代码将使用现有文档并使用新的主体进行更新,这是我试图避免的。我希望在索引中有一个新记录,尽管文档在索引中有一个匹配的id


如果您能为我提供帮助,我们将不胜感激。

显然,您不能拥有两个id相同的文档。 身份证是一把钥匙

您可以向上插入:如果文档不存在,则创建文档;如果文档存在,则更新文档。 更新:更新现有文档 部分更新:更新现有文档的一部分

当然,您可以创建一个具有my_field_id字段且不是文档id的文档,并插入具有相同my_field_id值的0-X文档

我真的不明白你为什么尝试复制一个文档,也许解释一下你的上下文,我们会尝试找到一个好的建模或解决方案

从第二个答案编辑


好的,我想在您的文档中添加一个字段=您的entityid,而不是使用elasticsearch id=key字段,只需插入文档而不设置id字段,es就可以为您生成一个id。然后使用entityid字段检索与您的实体相关的所有文档希望我很清楚:,如果您需要帮助,请共享您的映射,我将更新它


很高兴它能帮助你

不要使用elasticsearch id=key字段,而是在文档中添加一个字段=您的entityid,只需插入文档而不设置id字段,ES就可以为您生成一个id。然后使用entityid字段检索与您的实体相关的所有文档。

您好,谢谢您的回复。我正在尝试将每个活动记录到一个实体中,由于该实体总是相同的,但具有不同的值,这就是我尝试插入具有重复id的文档的原因。因此,与其在文档中使用elasticsearch id=key字段,不如添加一个字段=您的entityid I thinck,只需插入文档而不设置id字段,es就可以为您生成id。然后使用entityid字段检索与您的实体相关的所有文档希望我很清楚:,如果您需要帮助,请共享您的映射,我将更新它。您好,我已经按照您建议的方式编写了我的查询,效果很好,非常感谢。你可以把它作为答案贴出来,这样我就可以接受了。