Índice de cambio de nombre de Elasticsearch

Índice de cambio de nombre de Elasticsearch

Un índice o índices Elasticsearch es (son) una estructura de datos que contiene asignaciones para varios documentos. En una base de datos relacional, un índice podría referirse a una base de datos específica.

Un clúster Elasticsearch contiene varios índices, incluidos múltiples tipos, que luego contienen los documentos.

Lo siguiente podría representar la relación Elasticsearch con una base de datos relacional.

  • PostgreSQL -> Base de datos -> Tabla -> fila/columna
  • Elasticsearch -> índice -> type -> documento

En esta guía, discutiremos varios métodos para cambiar el nombre de un índice de Elasticsearch existente.

Método 1: Reindexing

El primer método que podemos usar al cambiar el nombre de un índice es la API de reintegración. Esta API le permite copiar documentos de un índice de origen a un índice de destino especificado.

Sin embargo, la API de Reindex no copia la configuración del índice de origen al destino. Por lo tanto, tenemos que configurar el índice de destino y aplicar la configuración del índice de origen antes de llamar a Reindex.

Podemos implementar una operación completa de reinicio siguiendo los pasos como se describe a continuación:

  1. Cree un nuevo índice (fuente) Elasticsearch
  2. Obtener la configuración del índice y guárdelo.
  3. Cree un nuevo índice (de destino) con la configuración del índice de origen.
  4. Llame a la API de reindex de origen a destino
  5. Eliminar el índice de origen.

Si tiene un índice de ElasticSearch existente, no dude en saltar al paso 2

NOTA: En esta guía, proporcionaremos todas las solicitudes de Elasticsearch para curl.

Paso 1: crear un nuevo índice
Creemos un índice que actúe como fuente. Para simplificar, utilizaremos una configuración de índice simple con la mayoría de los parámetros predeterminados.

Presentaremos una solicitud al punto final de Elasticsearch HTTP.

Una solicitud de ejemplo para crear un índice de "índice de prueba" está a continuación:

curl -xput "http: // localhost: 9200/test -index" -h 'content -type: application/json' -d '

"ajustes":
"índice":
"Number_of_shards": 3,
"Number_of_replicas": 2

,
"Mapeos":
"propiedades":
"Field1": "Tipo": "Texto"


'

El siguiente paso es agregar datos al índice creado. Por defecto, el índice no contiene ningún documento.

curl -xget http: // localhost: 9200/_cat/indices/test -odex \?V

Para agregar datos al índice, ejecute la solicitud como:

La solicitud anterior debe crear un documento en el índice de índice de prueba.

Podemos verificar que exista el documento utilizando la solicitud GET al punto final del índice.

curl -xget "http: // locahost: 9200/test -index/_search" -h 'content -type: application/json' -d '

"Consulta": "Match_all":
'
'

Una salida de ejemplo se muestra ANS:

Paso 2: Obtener la configuración de la fuente
El siguiente paso antes de realizar una operación de reindex es copiar la configuración del índice de origen.

Comenzaremos obteniendo la configuración de índice. Para hacer esto, enviamos una solicitud HTTP GET a la API _setting.

configuración = $ (curl -xget "https: // localhost: 9200/test -index/_settings")

Guardamos la salida en una variable que podemos verificar usando el comando:

Echo $ Configuración | JQ

Dado que la salida está en formato JSON, la pasamos a un procesador JSON como JQ. Una salida de ejemplo es como se muestra:

El siguiente paso es obtener la asignación del índice. En este caso, enviaremos una solicitud GET al punto final _mapping como:

mapeo = $ (curl -xget "https: // localhost: 9200/test -odex/_mapping")

Verificar que la salida se guarde a la variable:

echo $ mapeo | JQ

La salida es como se muestra:

A continuación, combine la salida de $ configuración y mapeo de $ a un solo formato JSON.

La siguiente es una captura de pantalla truncada de ambas salidas combinadas (config.json).

Paso 3: crear un nuevo índice
Ahora es el momento de crear un nuevo índice con la configuración de guardado. Asegúrese de que su configuración no contenga ningún error.

Ejecute el comando como:

curl -xput "http: // localhost: 9200/renamed -index" -h 'content -type: aplicación/json' -d config.json '

El siguiente es el contenido en el archivo de configuración, JSON utilizado en este tutorial.

Tras la creación exitosa, deberías ver reconocido: Verdadero como se muestra:

Paso 4: Reindex
Ahora que tenemos un índice renombrado similar al índice de origen, podemos copiar datos de la fuente al destino utilizando la API de Reindex.

curl -xpost "http: // localhost: 9200/_reindex" -h 'content -type: application/json' -d '

"fuente":
"índice": "índice de prueba"
,
"Dest":
"índice": "renombrado-index"

'

Una vez que realice la solicitud de reindex, ElasticSearch copiará los datos del índice de origen especificado al índice de destino.

Aquí hay una salida de ejemplo:

Paso 5: Eliminar el índice de origen
No tiene sentido tener dos índices con configuración y datos similares. Por lo tanto, podemos soltar el índice de origen:

curl -xdelete http: // localhost: 9200/test -odex

"Reconocido": Verdadero

Método 2: API clon

La segunda y más fácil forma de cambiar el nombre y el índice es usar la API de clones introducida en Elasticsearch versión 7.4 y más.

Para usar la API de clonos, debe asegurarse de que el índice de origen sea de solo lectura y que la salud del clúster sea verde.

Cómo funciona la clonación
La clonación funciona de la siguiente manera:

  • Crear un nuevo índice de elasticsearch. El nuevo índice debe contener definiciones idénticas como el índice anterior (índice de origen).
  • El siguiente paso es realizar un segmento de enlace duro del índice de origen al nuevo índice Elasticsearch.
  • Una vez que se realiza el enlace duro, el nuevo índice se vuelve a abrir con las definiciones y datos del índice anterior.

Paso 1: Establezca el índice de origen en solo lectura
Para establecer el índice de origen en modo de solo lectura, usamos la API _Settings y pasamos la información como se muestra en la solicitud a continuación:

curl -xput "http: // localhost: 9200/test -index/_settings" -h 'Content -type: Application/Json' -d '

"ajustes":
"índice.bloques.escribir ": verdadero

'

Paso 2: Índice de fuente de clonos para el objetivo
Para clonar el índice de prueba a un nuevo índice llamado Index de Cloned-Cloned, podemos ejecutar la solicitud como se muestra:

curl -xpost “http: // localhost: 9200/prueba-índice/_clone/renombrado clonado-índice"

Suponiendo que los siguientes requisitos son verdaderos, debe tener un índice renombrado del índice de origen.

  1. El índice objetivo especificado no debe existir.
  2. El nodo tiene suficiente espacio para almacenar el índice clonado
  3. El índice de origen tiene un número igual de fragmentos primarios como el índice de destino especificado.

Conclusión

En esta guía, cubrimos cómo cambiar el nombre de un índice Elasticsearch utilizando dos métodos.

Gracias por leer!