Я пытаюсь решить мою проблему.Я создаю приложение, в котором мы индексируем assets в Elastic.Природа активов очень динамична, потому что они содержат метаданные клиента, которые отличаются от клиента к клиенту.
Из-за этого Индекс строится из Списка динамики в C #,Это на самом деле работает как шарм.Проблема в том, что я не могу управлять свойством _id в Elastic при использовании интерфейса C #.Это означает, что когда я обновляю документы, вместо обновления правильного создается новый дубликат.
Мой код выглядит так:
List<dynamic> assets = new List<dynamic>();
var settings1 = new ConnectionSettings(
new Uri("http://localhost:9200")
).DefaultIndex("assets");
var client = new ElasticClient(settings1);
//assets is build here
var indexResponse = client.Indices.Create("assets");
var BulkResponse = client.IndexMany(assets);
Это на самом деле работает, и индекс строится какЯ ожидаю, что - почти.Несмотря на то, что у меня есть динамическое свойство Id, оно не выводится правильно, что означает, что документ получает _Id, определенный Elastic.Таким образом, в следующий раз, когда я выполню этот код, используя тот же Id, новый документ будет создан, а не обновлен.
Я искал все выше и ниже, но, похоже, не могу найти хорошего решения.Одна вещь, которую я попробовал, заключается в следующем:
var bulkResponse = client.Bulk(bd => bd.IndexMany(assets, (descriptor, s) => descriptor.Id(s.Id)));
Но это выдает ошибку, которую я не могу поймать в ядре .net.Это на самом деле работает на более ранних версиях Elastic, но, похоже, было сломано с 7.2 и 7.0.1 интерфейса C #.
Любая помощь очень ценится.