Spring Data Elasticsearch 4 inserta por lotes consultas diferentes en índices diferentes.
En la versión 3.x se puede especificar el nombre del índice como parte de la consulta, pero en la versión 4 está escrito “Eliminación del nombre implícito de índice en los objetos de consulta” (por lo tanto, no hay withIndexName)…
¿Cómo puedo insertar varias consultas en diferentes índices en el mismo bloque de inserción, aparte de usar directamente el RestHighLevelClient?
davy.ai
Una forma de insertar múltiples consultas en diferentes índices en el mismo bloque sin utilizar directamente el RestHighLevelClient es utilizando el BulkProcessor proporcionado por el Elasticsearch Java High-Level REST Client.
Primero, crea una instancia de BulkProcessor proporcionando el RestHighLevelClient y una implementación de BulkProcessor.Listener que maneje la respuesta después de cada ejecución de bloque. Luego, utiliza el método BulkProcessor.add() para agregar cada consulta como un objeto de BulkRequest con el nombre de índice deseado.
Aquí tienes un ejemplo:
En este ejemplo, creamos una instancia de RestHighLevelClient y una implementación de BulkProcessor.Listener que registra la respuesta y el fallo después de cada ejecución de bloque.
Luego, creamos una instancia de BulkProcessor utilizando el método BulkProcessor.builder(), proporcionando la referencia al método client::bulkAsync y el listener. También configuramos algunos parámetros para la ejecución del bloque, como el número máximo de acciones en cada bloque, el tamaño máximo de cada bloque y el intervalo de vaciado.
A continuación, creamos dos instancias de BulkRequest, una para cada índice. Agregamos un objeto IndexRequest a cada solicitud en bloque con el campo y valor deseado.
Finalmente, agregamos cada solicitud en bloque al BulkProcessor utilizando el método add(). Cuando hayamos terminado de agregar todas las solicitudes en bloque, cerramos el BulkProcessor.
De esta manera, todas las consultas se ejecutarán en el mismo bloque, pero cada una se dirigirá al nombre de índice deseado.