Я хотел бы добавить новое свойство в существующий индекс, который уже содержит документы.
Исходный документ
[ElasticsearchType(Name = "mydocument", IdProperty = nameof(Id))]
public class MyDocument
{
public Guid Id { get; set; } = Guid.NewGuid();
[Date(Name = "occurredon")]
public DateTime OccurredOn { get; set; }
[Text(Name = "details")]
public string Details { get; set; }
}
Как индекс был инициализирован и заполнен ...
var client = new ElasticClient(settings);
var createResponse = client.CreateIndex("myindex", d => d.Mappings(ms => ms.Map<MyDocument>(m => m.AutoMap())));
// index many documents...
var docs= new List<MyDocument>();
docs.Add(new MyDocument { OccurredOn = DateTime.UtcNow, Details = "foo1" });
docs.Add(new MyDocument { OccurredOn = DateTime.UtcNow, Details = "foo2" });
var indexResponse = await client.IndexManyAsync(docs, "myindex");
Теперь я хотел бы обновить документ, добавив свойство 'collector'.Новый документ будет выглядеть следующим образом ...
[ElasticsearchType(Name = "mydocument", IdProperty = nameof(Id))]
public class MyDocument
{
public Guid Id { get; set; } = Guid.NewGuid();
[Date(Name = "occurredon")]
public DateTime OccurredOn { get; set; }
[Text(Name = "details")]
public string Details { get; set; }
// new property
[Text(Name = "collector")]
public string CollectionHost { get; set; }
}
Какую одноразовую команду мне нужно ввести, чтобы добавить новое свойство collector?Я попробовал это, но это не удалось.
var z = await client.MapAsync(new PutMappingRequest("myindex", typeof(MyDocument)));
Я уверен, что это можно сделать, но, возможно, не с NEST, мне нужно было бы сделать это с API более низкого уровня?