Подтвердить что ты не робот

Определение пользовательского анализатора ElasticSearch с использованием Java API

Есть ли способ создать индекс и указать собственный анализатор с использованием Java API? Он поддерживает добавление сопоставлений при создании индекса, но я не могу найти способ сделать что-то подобное без отправки JSON через HTTP PUT:

curl -XPUT localhost:9200/twitter?pretty=true -d '{
"analysis": {
       "analyzer": {
            "steak" : {
                "type" : "custom", 
                "tokenizer" : "standard",
                "filter" : ["snowball", "standard", "lowercase"]
            }
        }
    }
}'

Я могу создать такой запрос с помощью JSONBuilder, но я не могу найти места в API, где его запускать, CreateIndexRequest не имеет ничего, что я могу использовать, и не имеет значения client.admin().indices(), насколько я можно видеть. Какой правильный способ сделать это?

4b9b3361

Ответ 1

Вы можете установить анализатор, используя client.admin().indices().prepareCreate("twitter").setSettings(...). Существует несколько способов создания настроек. Вы можете загружать их из текста, карты или даже использовать jsonBuilder, если это вам нужно:

client.admin().indices().prepareCreate("twitter")
            .setSettings(Settings.settingsBuilder().loadFromSource(jsonBuilder()
                .startObject()
                    .startObject("analysis")
                        .startObject("analyzer")
                            .startObject("steak")
                                .field("type", "custom")
                                .field("tokenizer", "standard")
                                .field("filter", new String[]{"snowball", "standard", "lowercase"})
                            .endObject()
                        .endObject()
                    .endObject()
                .endObject().string()))
            .execute().actionGet();

Ответ 2

Если вы находитесь в среде тестирования, вы также можете использовать этот проект, который будет создавать ваши индексы на основе аннотаций Java. https://github.com/tlrx/elasticsearch-test