Elasticsearch reindex todos los índices y verificar el estado

Elasticsearch reindex todos los índices y verificar el estado
Cuando trabaje con bases de datos, inevitablemente necesitará hacer cambios como agregar, eliminar y modificar datos.

Cuando está modificando los datos en un índice de elasticsearch, puede conducir al tiempo de inactividad a medida que se completa la funcionalidad y los datos se reintegran.

Este tutorial le dará una forma mucho mejor de actualizar los índices sin experimentar ningún tiempo de inactividad con la fuente de datos existente. Usando la API de reintegración de ElasticSearch, copiaremos datos de una fuente específica a otra.

Empecemos.

NOTA: Antes de comenzar, las operaciones de reintegración son pesadas de recursos, especialmente en grandes índices. Para minimizar el tiempo requerido para reindexarse, deshabilite number_of_replicas estableciendo el valor en 0 y habilitarlos una vez que el proceso esté completo.

Habilitar el campo _surce

La operación de reindexación requiere que el campo de origen se habilite en todos los documentos en el índice de origen. Tenga en cuenta que el campo de origen no está indexado y no se puede buscar, pero es útil para varias solicitudes.

Habilite el campo _source agregando una entrada como se muestra a continuación:

Poner index_1

"Mapeos":
"_fuente":
"habilitado": verdadero


Reindex todos los documentos

Para reindex documentos, necesitamos especificar la fuente y el destino. El origen y el destino pueden ser un índice, alias de índice y flujos de datos existentes. Puede usar índices del clúster local o remoto.

NOTA: Para que la indexación ocurra con éxito, tanto la fuente como el destino no pueden ser similares. También debe configurar el destino según sea necesario antes de reindexarse ​​porque no aplica la configuración desde la fuente o cualquier plantilla asociada.

La sintaxis general para reindexarse ​​es como:

Post /_reindex

Comencemos creando dos índices. El primero será la fuente, y la otra será el destino.

Poner /fuente_index

"Configuración": "Number_of_replicas": 0, "Number_of_shards": 1,
"Mapeaciones": "_source": "habilitado": true, "alias":
"alias_1": ,
"alias_2":
"Filtrar": "término":
"usuario.ID ":" Kibana "
, "enrutamiento": "1"


El comando curl es:

curl -xput "http: // localhost: 9200/fuente_index" -h 'content -type: application/json' -d '"configuración": "number_of_replicas": 0, "number_of_shards": 1, "asignaciones" " : "_source": "habilitado": true, "alias": "alias_1": , "alias_2": "filtro": "término: " usuario.id ":" kibana "," enrutamiento ":" 1 " '

Ahora para el índice de destino (puede usar el comando anterior y cambiar algunas cosas o usar la que se da a continuación):

PUT /Destino_index

"Configuración": "Number_of_replicas": 0, "Number_of_shards": 1,
"Mapeaciones": "_source": "habilitado": true, "alias":
"alias_3": ,
"alias_4":
"Filtrar": "término":
"usuario.ID ":" Kibana "
, "enrutamiento": "1"


Como siempre, los usuarios de curl pueden usar el comando:

curl -xput "http: // localhost: 9200/destacado_index" -h 'content -type: application/json' -d '"configuración": "number_of_replicas": 0, "number_of_shards": 1, "asignaciones" " : "_source": "habilitado": true, "alias": "alias_3": , "alias_4": "filtro": "término: " usuario.id ":" kibana "," enrutamiento ":" 1 " '

Ahora, tenemos los índices que queremos usar, podemos pasar a reindexar los documentos.

Considere la solicitud a continuación que copia los datos de Source_Index a Destination_index:

Publicar _reindex

"fuente":
"índice": "fuente_index"
,
"Dest":
"índice": "Destino_index"

El comando curl para esto es:

curl -xpost "http: // localhost: 9200/_reindex" -h 'content -type: application/json' -d '"fuente": "index": ".Kibana "," Dest ": " índice ":" Destino_index " '

Ejecución de este comando debe brindarle información detallada sobre la operación realizada.

NOTA: El Source_Index debe tener datos.


"Tomado": 2836,
"Timed_out": falso,
"Total": 13059,
"Actualizado": 0,
"Creado": 13059,
"Eliminado": 0,
"Lotes": 14,
"versión_conflicts": 0,
"Noops": 0,
"reintentos":
"Bulk": 0,
"Buscar": 0
,
"Throttled_millis": 0,
"requests_per_second": -1.0,
"Throttled_Util_millis": 0,
"Fallos": []

Verificación de estado de reindexación

Puede ver el estado de las operaciones de reindexación simplemente usando las tartas. Por ejemplo, considere la siguiente solicitud:

Get /_Tasks?detallado = true & acciones =*reindex & group_by = padres

El comando curl es:

curl -xget "http: // localhost: 9200/_Tasks?detallado = true & acciones =*reindex & group_by = padres "

Eso debería brindarle información detallada sobre el proceso de reintegración como se muestra a continuación:


"tareas" :
"Ftd_2ixjsxudn_ua4tzhhg: 51847":
"nodo": "ftd_2ixjsxudn_ua4tzhhg",
"ID": 51847,
"Tipo": "Transporte",
"Acción": "índices: datos/escritura/reindex",
"estado" :
"Total": 13059,
"Actualizado": 9000,
"Creado": 0,
"Eliminado": 0,
"Lotes": 10,
"versión_conflicts": 0,
"Noops": 0,
"reintentos":
"Bulk": 0,
"Buscar": 0
,
"Throttled_millis": 0,
"requests_per_second": -1.0,
"Throttled_Util_millis": 0
,
"Descripción": "Reindex desde [fuente_index] a [Destino_index] [_ DOC]",
"Start_time_in_millis": 1611247308063,
"Running_time_in_nanos": 2094157836,
"cancelable": verdadero,
"Encabezados":


Conclusión

Hemos cubierto todo lo que necesita saber sobre el uso de la API de reindexación de Elasticsearch para copiar documentos de un índice (fuente) a otro (destino). Aunque hay más en la API de reindexación, esta guía debería ayudarlo a comenzar.