Cómo aumentar el conteo de fragmentos primarios en Elasticsearch

Aprende cómo aumentar la cantidad de shards primarios en Elasticsearch usando las API split y reindex para un escalado óptimo de shards.

¿Todavía no conoces Elasticsearch? Únete a nuestro webinar de los Primeros pasos con Elasticsearch. También puedes iniciar una prueba gratuita en el cloud o prueba Elastic en tu máquina ahora mismo.

No es posible aumentar el número de fragmentos primarios de un índice existente, lo que significa que hay que recrear un índice si quieres aumentar el número de fragmentos primarios. En estas situaciones se emplean generalmente dos métodos: la API _reindex y la API _split.

La API _split suele ser un método más rápido que la API _reindex. La indexación debe detener antes de ambas operaciones, de lo contrario, el source_index y el target_index el recuentos de documentos variarán.

Método 1 – usando la API dividida

La API dividida se emplea para crear un nuevo índice con el número deseado de fragmentos primarios copiando los ajustes y mapeando un índice existente. El número deseado de fragmentos primarios puede establecer durante la creación. Se deben comprobar las siguientes configuraciones antes de implementar la API de división:

  1. El índice de origen debe ser de solo lectura. Esto significa que el proceso de indexación debe detener.
  2. El número de fragmentos primarios en el índice objetivo debe ser un múltiplo del número de fragmentos primarios en el índice fuente. Por ejemplo, si el índice fuente tiene 5 fragmentos primarios, los fragmentos primarios del índice objetivo pueden establecer en 10, 15, 20, y así sucesivamente.

Nota: Si solo es necesario cambiar el número principal del fragmento, se prefiere la API dividida porque es mucho más rápida que la API de Reindex.

Implementación de la API de división

Crea un índice de prueba:

El índice fuente debe ser de solo lectura para poder dividir:

Los ajustes y mapeos se copiarán automáticamente desde el índice fuente:

Puedes consultar el progreso con:

Como los ajustes y mapeos se copian de los índices fuente, el índice destino es de solo lectura. Activemos la operación de escritura para el índice objetivo:

Consulta el índice de origen y destino docs.count antes de eliminar el índice original:

El nombre del índice y el nombre del alias no pueden ser iguales. Necesitas eliminar el índice fuente y agregar el nombre del índice fuente como alias al índice objetivo:

Luego de agregar el alias test_split_source al índice de test_split_target , deberías probarlo con:

Método 2 – usando la API de reindex

Al crear un nuevo índice con la API Reindex, se puede obtener cualquier número de conteos de fragmentos primarios. Tras crear un nuevo índice con el número previsto de fragmentos primarios, todos los datos del índice fuente pueden reindexar a este nuevo índice.

Además de las funciones de API dividida, los datos pueden manipular usando el ingest_pipeline en el AP de reindexación. Con la tubería de ingest, solo los campos especificados que encajen con el filtro se indexarán en el índice objetivo usando la consulta. El contenido de los datos puede modificar usando un script sencillo, y varios índices pueden fusionar en un solo índice.

Implementación de la API de reindex

Crea un reindexado de prueba:

Copia la configuración y los mapeos del índice fuente:

Crea un índice objetivo con ajustes, mapeos y el número de fragmentos deseado:

*Nota: ajustar number_of_replicas: 0 y refresh_interval: -1 aumentará la velocidad de reindexación.

Inicia el proceso de reindexación. Configurar requests_per_second=-1 y slices=auto ajustará la velocidad de reindexación.

Verás el task_id cuando ejecutes la API de reindex. Cópila y comprueba con _tasks API:

Actualiza la configuración después de que termine el reindexado:

Consulta el índice fuente y destino docs.count antes de borrar el índice original, debería ser el mismo:

El nombre del índice y el nombre del alias no pueden ser iguales. Elimina el índice fuente y agrega el nombre del índice fuente como alias al índice objetivo:

Luego de agregar el alias test_split_source al índice de test_split_target, pruébalo usando:

Resumen

Si quieres aumentar el recuento de fragmentos primarios de un índice existente, necesitas recrear los ajustes y asignaciones a un nuevo índice. Hay 2 métodos principales para hacerlo: la API de reindex y la API de split. La indexación activa debe detener antes de usar cualquiera de los dos métodos.

Contenido relacionado

¿Estás listo para crear experiencias de búsqueda de última generación?

No se logra una búsqueda suficientemente avanzada con los esfuerzos de uno. Elasticsearch está impulsado por científicos de datos, operaciones de ML, ingenieros y muchos más que son tan apasionados por la búsqueda como tú. Conectemos y trabajemos juntos para crear la experiencia mágica de búsqueda que te dará los resultados que deseas.

Pruébalo tú mismo