Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

427
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!