我有一个具有100多个属性的弹性搜索索引。我想为大多数字段添加自定义分析器。我想避免使用典型的嵌套语法在每个字段中指定分析器。
writing Analyzers
让我知道是否还有其他方法可以将分析仪设置为通用设置。 请让我知道您的想法。预先感谢。
答案 0 :(得分:0)
在创建索引时,可以通过将名称为text
的分析器添加到索引设置中来为索引中的所有"default"
字段change the default analyzer >
var defaultIndex = "my_index";
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var settings = new ConnectionSettings(pool)
.DefaultIndex(defaultIndex);
var client = new ElasticClient(settings);
var createIndexResponse = client.CreateIndex(defaultIndex, c => c
.Settings(s => s
.Analysis(a => a
.Analyzers(an => an
.Standard("default", st => st
.StopWords("_english_")
)
)
)
)
);
它将发送带有以下正文的创建索引请求
{
"settings": {
"analysis": {
"analyzer": {
"default": {
"type": "standard",
"stopwords": [
"_english_"
]
}
}
}
}
}
如果您希望将其应用于所有创建的索引,则可以使用index template将此约定应用于所有自动创建的索引
var putIndexTemplateResponse = client.PutIndexTemplate("default_analyzer", t => t
.IndexPatterns("*")
.Order(0)
.Settings(s => s
.Analysis(a => a
.Analyzers(an => an
.Standard("default", st => st
.StopWords("_english_")
)
)
)
)
);