es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Normalizador predeterminado de Elasticsearch que se puede aplicar a todos los campos de palabras clave sin mapear explícitamente.

He creado un normalizador personalizado y un analizador personalizado con el nombre ‘default’ como parte de mi plantilla de índice. Puedo ver que el analizador predeterminado se aplica automáticamente a todos los campos, pero el normalizador no lo hace.

¿Existe alguna otra forma en la que pueda lograr que este normalizador predeterminado se aplique a todos los campos?

Mi objetivo final es buscar en un campo de tipo keyword de manera insensible a mayúsculas y minúsculas utilizando el normalizador.

PD: Mi analizador personalizado con el nombre “default” convierte todos los campos en keywords.

Mis configuraciones:

settings : {
   "index" : {
      "analysis" :{
         "normalizer":{
            "default":{
               "type": "custom",
               "char_filter": [],
               "filter": ["lowercase"]
            }
         },
         "analyzer":{
            "default":{
               "type":"keyword"
            }
         }
      }
   }
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la cual tu normalizador personalizado no se aplica automáticamente a todos los campos de tu plantilla de índice es porque los normalizadores solo se aplican a campos de tipo ‘keyword’ que tienen explícitamente establecido el parámetro ‘normalizer’.

    Sin embargo, hay una forma de lograr tu objetivo final de buscar en un campo de tipo ‘keyword’ de forma insensible a mayúsculas y minúsculas usando el normalizador personalizado ‘default’. En lugar de depender del mapeo de campos automático, puedes establecer explícitamente el parámetro ‘normalizer’ para cada campo de tipo ‘keyword’ en el mapeo de tu índice.

    Por ejemplo, si tienes un campo llamado ‘my_field’ de tipo ‘keyword’, puedes agregar el siguiente mapeo a tu plantilla de índice:

    "mappings": {
        "_doc": {
            "properties": {
                "my_field": {
                    "type": "keyword",
                    "normalizer": "default"
                }
            }
        }
    }
    

    Esto asegurará que se aplique el normalizador ‘default’ a ‘my_field’, lo que te permitirá buscar en él de forma insensible a mayúsculas y minúsculas.

    Ten en cuenta que si tienes muchos campos de tipo ‘keyword’ en tu índice, agregar manualmente el parámetro ‘normalizer’ a cada campo puede volverse engorroso. En ese caso, es posible que desees considerar el uso de una plantilla de mapeo dinámico que aplique automáticamente el parámetro ‘normalizer’ a todos los campos de tipo ‘keyword’.

    ¡Espero que esto te ayude! Hazme saber si tienes alguna otra pregunta.

Comments are closed.