Добавьте универсальный анализатор для всех полей поиска Nest Elastic 6.2. - PullRequest
0 голосов
/ 11 января 2019

У меня есть эластичный поисковый индекс, который имеет более 100 свойств. Я хочу добавить пользовательский анализатор для большинства полей. Я хочу избежать типичного синтаксиса гнезда для указания анализатора для каждого поля.
пишущие анализаторы

Дайте мне знать, есть ли другая альтернатива для установки анализатора в качестве универсальной настройки. Пожалуйста, дайте мне знать ваши мысли о том же. Заранее спасибо.

1 Ответ

0 голосов
/ 13 января 2019

Вы можете изменить анализатор по умолчанию для всех text полей в индексе, добавив анализатор с именем "default" в настройки индекса при создании индекса

var defaultIndex = "my_index";
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));

var settings = new ConnectionSettings(pool)
    .DefaultIndex(defaultIndex);

var client = new ElasticClient(settings);

var createIndexResponse = client.CreateIndex(defaultIndex, c => c
    .Settings(s => s
        .Analysis(a => a
            .Analyzers(an => an
                .Standard("default", st => st
                    .StopWords("_english_")
                )
            )
        )
    )
);

, который отправит запрос на создание индекса со следующим телом

{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "type": "standard",
          "stopwords": [
            "_english_"
          ]
        }
      }
    }
  }
}

Если вы хотите, чтобы это применялось ко всем созданным индексам, вы можете использовать шаблон индекса , чтобы применить это соглашение ко всем автоматически создаваемым индексам

var putIndexTemplateResponse = client.PutIndexTemplate("default_analyzer", t => t
    .IndexPatterns("*")
    .Order(0)
    .Settings(s => s
        .Analysis(a => a
            .Analyzers(an => an
                .Standard("default", st => st
                    .StopWords("_english_")
                )
            )
        )
    )
);
...