Гнездо и эластичный поиск - картирование
Я пытаюсь отобразить несколько анализаторов в поле моего эластичного типа. Если я использую 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? Означает ли это, что индекс и поиск установлены одинаково?
1 ответ
Просто указав analyzer
действительно настройки index_analyzer
а также search_analyzer
в то же время. analyzer
является свойством эластичного поиска, а не магическим поведением из NEST.
Беглое отображение отсутствует .Analyzer()
метод, это теперь добавлено в 1.0!