Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

431
Visualizações
Cómo ordenar el tipo de campo ''texto" en la búsqueda elástica

Estoy trabajando en una consulta de clasificación de campos múltiples de búsqueda elástica, tengo datos en el siguiente formato:

 { "person_name" : "Abraham Benjamin deVilliers", "created_on": "Tue, 02 Apr 2018 16: 17: 54 GMT", "name": "Abraham", "office":{ "name":"my_office" } }, { "person_name" : "John Bradshaw", "created_on": "Thu Apr 05 2018 14:42:30 GMT", "name": "jhon", "office": { "name":"Abraham deVilliers" } }, { "person_name" : "John Bradshaw", "created_on": "Tue, 03 Apr 2018 11: 39: 17 GMT", "name": "Abraham deVilliers", "office": { "name":"blabla" } }

Donde el campo person_name es de tipo text y created_on es de tipo string . Tengo que ordenar la respuesta anterior según los campos person_name y created_on .

La consulta que intentamos es la siguiente:

 GET /my_index/_search { sort: [{ "person_name": { "order": "asc" }, "created_on": { "order": "desc" } }] }

Al ordenar la respuesta con la consulta anterior, recibo el siguiente error:

mensaje: '[illegal_argument_exception] Los datos de campo están deshabilitados en los campos de texto de forma predeterminada. Establezca fielddata=true en [person_name] para cargar fielddata en la memoria al desinvertir el índice invertido. Tenga en cuenta que esto, sin embargo, puede usar una cantidad significativa de memoria. Alternativamente, use un campo de palabra clave en su lugar.'

Al buscar, encontramos que necesitamos modificar el mapeo del campo person_name de tipo text a tipo keyword . Pero no podemos modificar el mapeo existente ya que contiene millones de registros.

¿Hay alguna otra forma de realizar una consulta de clasificación en el campo de text sin alterar el mapeo existente de la búsqueda elástica?

Cualquier ayuda será apreciada.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Hay dos maneras de lograr lo que necesita.

  1. Agregar un nuevo campo multi-campos . Cuando use campos múltiples, cada vez que indexe un campo nuevo, elasticsearch aplicará automáticamente una lógica de analizador diferente para el campo al que se refiere. El campo sin raw no se analizará, lo que significa que será un término en total, por lo que se puede usar para ordenar. Para hacer esto, deberá actualizar su mapeo y luego usar la API de reindexación para actualizar sus datos (básicamente crea un nuevo índice y luego cambia su aplicación para usar el nuevo índice en lugar del anterior, para hacer esto sin tiempo de inactividad puede usar un alias ). Otra forma de actualizar el índice sin crear uno nuevo es usar la API update_by_query .
  2. Si solo desea que este tipo funcione sin cambiar nada, puede usar secuencias de comandos . Básicamente, elegirá el valor guardado y ordenará en función de eso. Pero esto no es eficaz para un uso prolongado. Esto es rápido y sucio, así que trátelo con cuidado.

Todos los enlaces apuntan a la documentación oficial de elasticsearch.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda