我正在尝试将多个分析仪映射到弹性类型的字段中。如果我使用ElasticAttribute来映射分析器:
[ElasticProperty(Analyzer = "fulltext")]
public string LongDescription { get; set; }
我看看我得到的请求:
"name": {
"type": "string",
"analyzer": "fulltext"
},
为了将多个分析仪映射到同一个字段,我使用Fluent映射并添加一个多字段:
.Properties(prop => prop
.MultiField(mf => mf
.Name(p => p.Name)
.Fields(f => f
.String(
s =>
s.Name(n => n.Name)
.IndexAnalyzer("autocomplete_analyzer")
.IncludeInAll(false)
.Index(FieldIndexOption.not_analyzed))
.String(
s =>
s.Name(n => n.Name)
.IndexAnalyzer("fulltext")
.IncludeInAll(false)
.Index(FieldIndexOption.not_analyzed))
)
)
)
生成的请求如下所示:
"name": {
"type": "multi_field",
"fields": {
"name": {
"type": "string",
"index": "not_analyzed",
"index_analyzer": "autocomplete_analyzer",
"include_in_all": false
},
"name": {
"type": "string",
"index": "not_analyzed",
"index_analyzer": "fulltext",
"include_in_all": false
}
}
},
我对“analyzer”/“index_analyzer”属性特别感兴趣。通过流畅的映射,我只能设置IndexAnalyzer或SearchAnalyzer。我理解IndexAnalyzer和SearchAnalyzer之间的区别,但是当我使用ElasticAttribute时,“analyzer”属性是什么?这只是意味着索引和搜索设置相同吗?
答案 0 :(得分:3)
仅指定analyzer
确实同时设置了index_analyzer
和search_analyzer
。 analyzer
是一个弹性搜索属性,而不是NEST的一些神奇行为。
fluent映射缺少.Analyzer()
方法,现在已添加到1.0!