我想要做的是在一个索引字段下存储多种语言。我知道我需要结构,如解释here。如何使用elasticsearch索引多字段元素
下面是示例类与多日提交的属性“名称”:
public class Data
{
public int ID { get; set; }
public string Name { get; set; }
}
索引的映射:
ElasticsearchConfiguration.Instance.Client.CreateIndex("data", i =>
i.Settings(s =>
s.NumberOfShards(2)
.NumberOfReplicas(0))
.Mappings(m =>
m.Map<Data>(map =>
map.AutoMap()
.Properties(ps => ps
.Text(s => s
.Name(n => n.Name)
.Fields(f => f
.Text(st => st
.Name("en")
.Analyzer("english"))
.Text(st => st
.Name("de")
.Analyzer("german"))))))));
映射“对象类型 - >索引名”是在创建的做ElasticClient。这就是我如何将数据发送到服务器elasticsearch:
var dataPartitions = DBUtil.GetData().Partition(1000);
foreach (var partition in dataPartitions)
{
var result = ElasticsearchConfiguration.Instance.Client.Bulk(b => b.IndexMany(partition));
if (!result.IsValid)
{
Environment.Exit(1);
}
}
所以,我已经配置指数因为我想,但我不知道如何为包括指数的同时创建德语和英语分性质不同的值。我是否必须为每种语言使用硬编码属性(本例中为“en”和“de”)而不是嵌套类而不是“名称”?或者,也许发送单独的语言属性请求?
对不起你想在同一个值应用于多个分析仪(多国语言的一个名称)或有需要用正确的分析(一个德国名字,一个英文名进行分析多个值......这可以有)? –
第二个选项。我知道我可以做到这一点,如果我有Data类中的属性,比如Name_EN,Name_DE。我试图避免在添加新语言后更新Data类。如果没有,我会为每种语言创建单独的索引,但后来我有可能重复的结果问题(一个en,一个de) – drazen