我有以下代码:
IIndexResponse response = elclient.Index(appointmentHistoryRecord, i => i.Index(OperaIndexName)
.Type(appointmentHistoryRecord.GetType())
.Id(appointmentHistoryRecord.AppointmentId.ToString())
.Refresh(Refresh.False));
上面的代码工作得很好,但是它并没有表现出我想要的表现。我要完成的工作是插入一个索引中已经存在的ID的文档。新文档具有相同的ID,但正文不同。
我编写的代码将采用现有文档并使用新的正文对其进行更新,这是我试图避免的事情。我希望索引中有一个新记录,尽管该文档中索引中的ID匹配。
我将尽一切帮助我实现这一目标。
答案 0 :(得分:1)
您不能拥有2个具有相同ID的文档,以确保明显的存在理由。 id是密钥。
您可以upsert:如果不存在则创建一个文档,如果存在则进行更新。 更新:更新现有文档 部分更新:更新现有文档的一部分。
您当然可以创建带有my_field_id字段(不是文档ID)的文档,并插入具有相同my_field_id值的0-X文档。
我不太了解为什么您要重复文档,或者解释您的上下文,我们将尝试找到一个好的模型或解决方案。
根据第二个答案进行编辑
好吧,所以不要在文档中添加一个field(我认为是您的entityid),而不要使用elasticsearch id(= key field),而无需设置id字段即可插入文档(让我们为您生成一个id)。然后,使用entityid字段检索与您的实体相关的所有文档(希望我很清楚:)),如果需要帮助,请共享您的映射,我会进行更新。
很高兴能为您提供帮助;)
答案 1 :(得分:0)
与其在文档中添加一个字段(我认为是您的实体ID),而不是使用elasticsearch id(=键字段),而无需设置id字段即可插入文档(让ES为您生成一个id)。然后,使用entityid字段检索与您的实体相关的所有文档。