У меня есть индекс, в который я добавляю и вставляю документы, и я хотел бы дополнить существующий документ полем, которого нет в исходном отображении.
Допустим, у меня есть родительский документ с именем "BidResponse", который я индексирую, затем я обновляю этот документ, чтобы добавить новые поля, используя дочерний элемент этого родителя. Но я также хотел бы добавить поле «Дата», которого нет ни в исходном дескрипторе сопоставления, ни в документах, которые я проиндексировал.
Возможно ли использование клиента NEST.NET 6 и как мне динамически добавлять это поле?
var connSettings = new ConnectionSettings(pool)
.DefaultMappingFor<BidResponse>(m => m
.IndexName(BuyPass.Shared.Helpers.Constants.BidResponseElasticSearchIndexName)
.TypeName(nameof(BidResponse))
.RelationName(nameof(BidResponse))
)
.DefaultMappingFor<SspWin>(m => m
.IndexName(BuyPass.Shared.Helpers.Constants.BidResponseElasticSearchIndexName)
.TypeName(nameof(BidResponse))
.RelationName(nameof(SspWin))
)
.DefaultMappingFor<Impression>(m => m
.IndexName(BuyPass.Shared.Helpers.Constants.BidResponseElasticSearchIndexName)
.TypeName(nameof(BidResponse))
.RelationName(nameof(Impression))
);
var client = new ElasticClient(connSettings);
var map = new CreateIndexDescriptor(BuyPass.Shared.Helpers.Constants.BidResponseElasticSearchIndexName)
.Mappings(ms => ms
.Map<BidResponse>(m => m
.AutoMap()
.Properties(ps => ps
.Nested<SeatBid>(n => n
.Name(c => c.SeatBids)
.AutoMap()
)
)
)
);
if (!(await client.IndexExistsAsync(BuyPass.Shared.Helpers.Constants.BidResponseElasticSearchIndexName))
.Exists)
{
await client.CreateIndexAsync(map);
}
await esClient.IndexAsync(bidResponse,
i => i.Id(bidResponse.Id).Index(_variableService.ElasticSearchBidResponseIndexName)
.Type(typeof(BidResponse)));
**// Then I would like to upsert an other document and also bring a new field named Date**
var esResponse = await esClient.UpdateAsync(DocumentPath<Impression>
.Id(impression.BidResponseId),
u => u
.Index(_variableService.ElasticSearchBidResponseIndexName)
.Type(typeof(BidResponse))
.DocAsUpsert()
.Doc(impression));
//.AddField("Date", DateTimeOffset.UtcNow) ?