tutorial - Definir Custom ElasticSearch Analyzer utilizando la API de Java
que es logstash (2)
¿Hay alguna manera de crear un índice y especificar un analizador personalizado utilizando la API de Java? Es compatible con la adición de asignaciones en la creación de índices, pero no puedo encontrar una manera de hacer algo como esto sin enviar el JSON a través de HTTP PUT:
curl -XPUT localhost:9200/twitter?pretty=true -d ''{
"analysis": {
"analyzer": {
"steak" : {
"type" : "custom",
"tokenizer" : "standard",
"filter" : ["snowball", "standard", "lowercase"]
}
}
}
}''
Puedo crear una consulta de este tipo usando JSONBuilder, pero no encuentro ningún lugar en la API donde ejecutarlo, CreateIndexRequest
no tiene nada que pueda usar y tampoco lo hace client.admin().indices()
, en la medida de lo posible. Puedo ver. ¿Cuál es la forma correcta de hacer esto?
Puede configurar el analizador utilizando client.admin().indices().prepareCreate("twitter").setSettings(...)
. Hay varias formas de crear configuraciones. Puedes cargarlos desde texto, mapa o incluso usar jsonBuilder si eso es lo que quieres:
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 se encuentra en un entorno de prueba, también puede utilizar este proyecto, que creará sus índices en base a las anotaciones de Java. https://github.com/tlrx/elasticsearch-test