1
在我的ElasticSearch服務器中,我有一個現有的索引模板,其中包含一些設置和一些映射。將映射添加到現有索引模板(使用NEST屬性)
我想爲模板添加新類型的映射,但由於無法更新模板,我需要刪除現有模板並重新創建它。
因爲我想保留所有現有的設置,我試圖讓現有的定義,在這個例子中,映射添加到它,然後刪除/重建,如:
using Nest;
using System;
public class SomeNewType {
[ElasticProperty(Index = FieldIndexOption.NotAnalyzed)]
public string SomeField { get; set; }
[ElasticProperty(Index = FieldIndexOption.Analyzed)]
public string AnotherField { get; set; }
}
class Program {
static void Main(string[] args) {
var settings = new ConnectionSettings(uri: new Uri("http://localhost:9200/"));
var client = new ElasticClient(settings);
var templateResponse = client.GetTemplate("sometemplate");
var template = templateResponse.TemplateMapping;
client.DeleteTemplate("sometemplate");
// Add a mapping to the template somehow...
template.Mappings.Add(...);
var putTemplateRequest = new PutTemplateRequest("sometemplate") {
TemplateMapping = template
};
client.PutTemplate(putTemplateRequest);
}
}
但是,我無法找到一種方法來映射添加使用ElasticProperty模板定義屬性,如在
client.Map<SomeNewType>(m => m.MapFromAttributes());
是否有可能創建一個RootObjectMapping
添加到收藏Mappings
類似於東西?
謝謝,這正是我所需要的。關於刪除,即使我刪除模板,它看起來仍然保留設置:畢竟,GET _template'請求也返回設置,對吧? –