Гнездо и эластичный поиск - картирование

Я пытаюсь отобразить несколько анализаторов в поле моего эластичного типа. Если я использую 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!

Другие вопросы по тегам