/ / Adición de un analizador personalizado a elasticsearch mediante el plugin de grails - grails, elasticsearch, groovy, elasticsearch-plugin

Adición de un analizador personalizado a elasticsearch mediante el plugin de grails - grails, elasticsearch, groovy, elasticsearch-plugin

Estoy tratando de agregar un analizador personalizado a elasticsearch a través del plugin de grails. Pude cambiar el analizador usado a un analizador común usando "buscable" en el dominio:

static searchable = {
all = [analyzer: "snowball"]
}

pero no se puede conocer un analizador de costum. No está claro cómo traducir el siguiente json en la API REST a un cierre maravilloso:

PUT /my_index
{
"settings": {
"analysis": {
"filter": {
"my_synonym_filter": {
"type": "synonym",
"synonyms": [
"british,english",
"queen,monarch"
]
}
},
"analyzer": {
"my_synonyms": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_synonym_filter"
]
}
}
}
}
}

esta La pregunta parece tener el mismo problema pero la respuesta no funciona, y esta la respuesta sugiere que podría no ser posible, pero eso no parece razonable porque configurar un analizador personalizado es bastante básico.

¿Alguna sugerencia?

Respuestas

0 para la respuesta № 1

Hay dos maneras en las que veo que podrían ayudarte a lograrlo.

La primera forma es atravesando el API de bajo nivel usando el inyectado elasticSearchHelper y accediendo al cliente de ES directamente.

    elasticSearchHelper.withElasticSearch { client ->
// Do some stuff with the ElasticSearch client
client.admin()
.indices()
.prepareCreate(indexName)
.setSettings(settings)       <--- your settings/analyzers go here
.execute()
.actionGet()
}

Una segunda forma consiste en utilizar una función no documentada de ElasticSearchAdminService Servicio, a saber, el createIndex() método, lo que le permite pasar en la configuración yAnalizadores que necesita al crear un nuevo índice. Este último básicamente hace exactamente lo mismo que la primera opción anterior, pero puedes usar el servicio de Grails directamente.