Soy un novato en Elastic Search. Tengo un campo no deseado en mi índice, dice el nombre del índice "test_index". Contiene casi 155154 documentos. Quiero eliminar un campo "B" no deseado de mi índice. Así es como se ve mi patrón de índice en formato json

{A B C: } }

Creo que eliminar B eliminará automáticamente C de mi índice también. Para hacer eso, utilicé la siguiente consulta pero no pareció funcionar.

POST test_index/_update_by_query?conflicts=proceed {
      "script" : "ctx._source.A.remove('B')", 
       "query" : {
        "exists": { "field": "A.B" }
      }
} 

Hágame saber dónde estoy cometiendo el error.

Gracias

0
Maunil Vyas 29 sep. 2019 a las 22:54

1 respuesta

La mejor respuesta

Tu sintaxis es correcta. Obtiene tiempo de espera debido a que se está ejecutando el proceso en segundo plano y se agota antes de completar la tarea .

Puede ejecutar la consulta de forma asíncrona especificando wait_for_completion=false

POST test_index/_update_by_query?conflicts=proceed&wait_for_completion=false
{
      "script" : "ctx._source.A.remove('B')", 
       "query" : {
        "exists": { "field": "A.B" }
      }
} 

Arriba dará una respuesta con taskId

{
  "task" : "{taskId:node}"
}

Ahora puede usar task api para obtener el estado de la tarea usando el valor de arriba

GET _tasks/{taskId:node}

Alternativamente, si no especifica wait_for_completion=false y obtiene un tiempo de espera, aún puede obtener todas las tareas mediante acciones como las siguientes. Pero recomendaría hacer el primero.

GET _tasks?actions=*byquery&detailed.

De los comentarios: Ahora digamos que si tengo 100 índices con un patrón de nombre similar, por ejemplo, un índice con un nombre "test_date - MM / DD / YYYY" aquí el prefijo es el mismo "test"

Para manejar múltiples índices, puede usar la sintaxis de comodín y reemplazar el nombre del índice con el prefijo y *

Por ejemplo, la siguiente consulta se ejecutará en todos los índices que comiencen con test:

POST test*/_update_by_query?conflicts=proceed&wait_for_completion=false
{
      "script" : "ctx._source.A.remove('B')", 
       "query" : {
        "exists": { "field": "A.B" }
      }
} 
2
Polynomial Proton 30 sep. 2019 a las 17:33