Définir un analyseur Elasticsearch personnalisé à L'aide de L'API Java

Existe-t-il un moyen de créer un index et de spécifier un analyseur personnalisé à l'aide de L'API Java? Il prend en charge l'ajout de mappages lors de la création d'index, mais je ne trouve pas de moyen de faire quelque chose comme ça sans envoyer le JSON via HTTP PUT:

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

Je peux construire une telle requête en utilisant JSONBuilder, mais je ne trouve pas de place dans L'API où l'exécuter, CreateIndexRequest n'a rien que je puisse utiliser et client.admin().indices(), pour autant que je puisse voir. Quelle est la bonne façon de le faire?

22
demandé sur Felix 2011-06-08 11:50:36

2 réponses

Vous pouvez définir analyzer en utilisant client.admin().indices().prepareCreate("twitter").setSettings(...). Il existe plusieurs façons de créer des paramètres. Vous pouvez les charger à partir du texte, de la carte ou même utiliser jsonBuilder si c'est ce que vous voulez:

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();
26
répondu imotov 2016-08-18 00:25:12

Si vous êtes sur un environnement de test, vous pouvez également utiliser ce projet qui créera vos index basés sur des annotations Java. https://github.com/tlrx/elasticsearch-test

1
répondu Sebastien Lorber 2012-07-04 10:17:08