使用 NEST 从 ElasticSearch 中的插件设置分析器
Setting analyzer from plugin in ElasticSearch with NEST
我的第一个 SO post!
我正在尝试为字符串字段设置一个 Stempel 分析器(波兰语的 ES 分析器)。我可以通过 PUT 请求来完成:
{
"doc": {
"_source": {
"enabled": false
},
"properties": {
"file": {
"type": "attachment",
**"analyzer": "polish"**,
"fields": {
"content": {
"type": "string",
"term_vector": "with_positions_offsets"
}
}
}
}
}
}
而且效果很好。试图通过 NEST 做同样的事情。
[ElasticProperty(Name = "_content", TermVector = TermVectorOption.WithPositionsOffsets, Analyzer = "polish")]
public string Content { get; set; }
不工作也没有:
client.CreateIndex(index, b => b.AddMapping<DocInES>(m => m
.MapFromAttributes()
.Properties(props => props
.String(s => s
.Name(p => p.File.Content)
.Analyzer("polish")
))));
当我使用
var result = client.Analyze(a => a.Index("doc").Analyzer("polish").Text("...text..."));
它工作正常,所以 .NET 正在检测这个分析器。
我正在使用 ES 2.1.1。 &
巢 1.7.1
编辑:
根据我的检查,NEST 似乎没有对在 .NET 中创建的附件 class 的属性进行映射。它确实映射文档的属性 class
[ElasticType(Name = "docInES")]
public class DocInES {
public int InstitutionId { get; set;}
public int DocumentId { get; set; }
[ElasticProperty(Store = true, Analyzer = "polish")]
public string Title { get; set; }
[ElasticProperty(Type = FieldType.Attachment)]
public Attachment File { get; set; }
}
但不是附件 class:
public class Attachment {
[ElasticProperty(Name = "content2", Store = true)]
public string Content { get; set; }
[ElasticProperty(Name = "content_type2")]
public string ContentType { get; set; }
[ElasticProperty(Name = "name2", Analyzer = "english")]
public string Name { get; set; }
}
您可能应该检查 Github 上的兼容性矩阵。
Nest 1.7.1 与 ES 2.1.1 不兼容
我的第一个 SO post! 我正在尝试为字符串字段设置一个 Stempel 分析器(波兰语的 ES 分析器)。我可以通过 PUT 请求来完成:
{
"doc": {
"_source": {
"enabled": false
},
"properties": {
"file": {
"type": "attachment",
**"analyzer": "polish"**,
"fields": {
"content": {
"type": "string",
"term_vector": "with_positions_offsets"
}
}
}
}
}
}
而且效果很好。试图通过 NEST 做同样的事情。
[ElasticProperty(Name = "_content", TermVector = TermVectorOption.WithPositionsOffsets, Analyzer = "polish")]
public string Content { get; set; }
不工作也没有:
client.CreateIndex(index, b => b.AddMapping<DocInES>(m => m
.MapFromAttributes()
.Properties(props => props
.String(s => s
.Name(p => p.File.Content)
.Analyzer("polish")
))));
当我使用
var result = client.Analyze(a => a.Index("doc").Analyzer("polish").Text("...text..."));
它工作正常,所以 .NET 正在检测这个分析器。 我正在使用 ES 2.1.1。 & 巢 1.7.1
编辑: 根据我的检查,NEST 似乎没有对在 .NET 中创建的附件 class 的属性进行映射。它确实映射文档的属性 class
[ElasticType(Name = "docInES")]
public class DocInES {
public int InstitutionId { get; set;}
public int DocumentId { get; set; }
[ElasticProperty(Store = true, Analyzer = "polish")]
public string Title { get; set; }
[ElasticProperty(Type = FieldType.Attachment)]
public Attachment File { get; set; }
}
但不是附件 class:
public class Attachment {
[ElasticProperty(Name = "content2", Store = true)]
public string Content { get; set; }
[ElasticProperty(Name = "content_type2")]
public string ContentType { get; set; }
[ElasticProperty(Name = "name2", Analyzer = "english")]
public string Name { get; set; }
}
您可能应该检查 Github 上的兼容性矩阵。
Nest 1.7.1 与 ES 2.1.1 不兼容