Гнездо 5.6 - Как вставить документ с уже существующим идентификатором? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть следующий код:

IIndexResponse response = elclient.Index(appointmentHistoryRecord, i => i.Index(OperaIndexName)
                                                                         .Type(appointmentHistoryRecord.GetType())
                                                                         .Id(appointmentHistoryRecord.AppointmentId.ToString())
                                                                         .Refresh(Refresh.False));

Приведенный выше код работает просто отлично, но он не ведет себя так, как я хочу, чтобы он вел себя. Я пытаюсь выполнить вставку документа с идентификатором, который уже существует в индексе. Новый документ будет иметь тот же идентификатор, но другое тело.

Код, который я написал, возьмет существующий документ и обновит его новым телом, чего я стараюсь избегать. Я хочу иметь новую запись в индексе, несмотря на то, что документ имеет соответствующий идентификатор в индексе.

Любая помощь в том, как я могу это сделать, будет очень признательна.

Ответы [ 2 ]

1 голос
/ 26 марта 2019

Вы не можете иметь 2 документа с одинаковым идентификатором для очевидного смысла.id - это ключ.

Вы можете отказаться: создать документ, если он не существует, обновить, если он существует.обновить: обновить существующий документ частичное обновление: обновить часть существующего документа.

Конечно, вы можете создать документ с полем my_field_id (который не является идентификатором документа) и вставить документы 0-X.с тем же значением my_field_id.

Я не совсем понимаю, почему вы пытаетесь продублировать документ, возможно, объясните свой контекст, и мы попытаемся найти хорошее моделирование или решение.

Редактировать из второго ответа

Хорошо, поэтому вместо использования идентификатора упругого поиска (= ключевое поле) добавьте поле (= ваш entityid, я думаю) в ваш документ и просто вставьте документ без установкиПоле id (позволяет генерировать идентификатор для вас).Затем используйте поле entityid, чтобы получить все документы, относящиеся к вашей сущности (надеюсь, я ясен :)), поделитесь вашими сопоставлениями, если вам нужна помощь, и я обновлю ее.

Счастлив, что это поможет вам;)

0 голосов
/ 28 марта 2019

Вместо того, чтобы использовать идентификатор эластичного поиска (= ключевое поле), добавьте поле (= ваш entityid, я думаю) в свой документ и просто вставьте документ, не устанавливая поле идентификатора (позволяет ES генерировать идентификатор для вас).Затем используйте поле entityid, чтобы получить весь документ, связанный с вашей сущностью.

...