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?
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();
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