ElasticSearch API высокого уровня создания индекса с пользовательскими настройками возвращает ошибку - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь создать рекламный индекс с пользовательскими настройками, как объяснено здесь . Я использую ElasticSearch 6.3

Это мой код:

public CreateIndexResponse createIndex(@NotNull String indexName) throws IOException {
        CreateIndexRequest request = new CreateIndexRequest();
        request.index(indexName);
        Settings.Builder settingsBuilder =
                Settings.builder()
                        .put("settings.analysis.filter.autocomplete_filter.type", "edge_ngram")
                        .put("settings.analysis.filter.autocomplete_filter.min_gram", "1")
                        .put("settings.analysis.filter.autocomplete_filter.max_gram", "10")
                        .put("settings.analysis.analyzer.autocomplete.type", "custom")
                        .put("settings.analysis.analyzer.autocomplete.tokenizer", "standard")
                        .putList("settings.analysis.analyzer.autocomplete.filter", "lowercase", "autocomplete_filter");
        request.settings(settingsBuilder);
        return elasticSearchClient.indices().create(request, RequestOptions.DEFAULT);
    }

У меня есть исключение:

ElasticsearchStatusException [Исключение Elasticsearch [type = недопустимое_аргумент_exception, причина = неизвестная настройка [index.settings.analysis.analyzer.autocomplete.filter] пожалуйста, проверьте что все необходимые плагины установлены, или проверьте последние изменения документация по удаленным настройкам]]

Я использую экземпляр AWS ElasticSearch. Я предпочитаю использовать конструктор, а не простой JSON для создания моего запроса настроек. Я что-то не так делаю?

1 Ответ

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

Я нашел проблему.Кажется, ключи не должны включать префикс settings.

Рабочий код таков:

public CreateIndexResponse createIndex(@NotNull String indexName) throws IOException {
    CreateIndexRequest request = new CreateIndexRequest();
    request.index(indexName);
    Settings.Builder settingsBuilder =
            Settings.builder()
                    .put("analysis.filter.autocomplete_filter.type", "edge_ngram")
                    .put("analysis.filter.autocomplete_filter.min_gram", "1")
                    .put("analysis.filter.autocomplete_filter.max_gram", "10")
                    .put("analysis.analyzer.autocomplete.type", "custom")
                    .put("analysis.analyzer.autocomplete.tokenizer", "standard")
                    .putList("analysis.analyzer.autocomplete.filter", "lowercase", "autocomplete_filter");
    request.settings(settingsBuilder);
    return elasticSearchClient.indices().create(request, RequestOptions.DEFAULT);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...