Este artículo discutirá sobre cómo usar la API multi-get de Elasticsearch para obtener múltiples documentos JSON basados en sus IDS. Además, ElasticSearch le permite usar una consulta de obtención única para recuperar los documentos de los índices utilizando solo las ID de documento.
Vamos a explorar.
Solicitar sintaxis
La siguiente es la sintaxis para la API multi-get de ElasticSearch:
Get /_mget
Obtener // _ mget
La API multi-get admite múltiples índices que le permite obtener los documentos incluso si no están en el mismo índice.
La solicitud admite los siguientes parámetros de ruta:
- - El nombre del índice desde el cual recuperar los documentos según lo especificado por sus IDS.
También puede especificar los otros parámetros de consulta como se muestra:
- Preferencia - Define el nodo o fragmento preferido.
- Tiempo real - Si se establece en verdadero, la operación se realiza en tiempo real.
- Actualizar - Obliga a la operación a actualizar los fragmentos objetivo antes de obtener los documentos especificados.
- Enrutamiento - Un valor que se utiliza para enrutar las operaciones a un fragmento específico.
- Store_fields - Recupera los campos de documento almacenados en un índice en lugar del documento.
- _fuente - Un valor booleano que define si la solicitud debe devolver el campo _Source o no.
La consulta requiere el cuerpo, que incluye los siguientes valores:
- Documento - Especifica los documentos que desea obtener. Además, esta sección admite los siguientes atributos:
- _identificación - ID único del documento objetivo.
- _índice - El índice que contiene el documento de destino.
- Enrutamiento - La clave para el fragmento principal del documento.
- _fuente - Si es cierto, incluye todos los campos de origen; de lo contrario, los excluye.
- _Stored_fields - Los stored_fields que desea incluir.
- IDS - Las identificaciones de los documentos que desea obtener.
Ejemplo 1: Obtener múltiples documentos del mismo índice
El siguiente ejemplo muestra cómo usar la API multi-get de ElasticSearch para recuperar los documentos con ID específicos del índice Netflix:
curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: informes" -h "tipo de contenido: aplicación/json" -d '
"Documentos": [
"_id": "T3WNVombCK2AEZXPYTLJ"
,
"_id": "w3WnvombCK2AEZXPYTLJ"
]
'
La solicitud dada debe obtener los documentos con los ID especificados del índice de Netflix. La salida resultante es como se muestra:
"Documentos": [
"_index": "netflix",
"_id": "T3WNVombCK2AEZXPYTLJ",
"_versión 1,
"_seq_no": 0,
"_primary_term": 1,
"encontrado": verdadero,
"_fuente":
"Duración": "90 min",
"listed_in": "documentales",
"País: Estados Unidos",
"date_added": "25 de septiembre de 2021",
"show_id": "S1",
"Director": "Kirsten Johnson",
"Release_year": 2020,
"Calificación": "PG-13",
"Descripción": "A medida que su padre se acerca al final de su vida, el cineasta Kirsten Johnson presenta su muerte de formas inventivas y cómicas para ayudarlos a enfrentar a los inevitables.",
"Tipo": "Película",
"Título": "Dick Johnson está muerto"
,
"_index": "netflix",
"_id": "w3WnvombCK2AEZXPYTLJ",
"_versión 1,
"_seq_no": 12,
"_primary_term": 1,
"encontrado": verdadero,
"_fuente":
"País": "Alemania, República Checa",
"show_id": "S13",
"Director": "Christian Schwochow",
"Release_year": 2021,
"Calificación": "TV-Ma",
"Descripción": "Después de que la mayoría de su familia es asesinada en un bombardeo terrorista, una mujer joven es atraída de unirse al grupo que los mató.",
"Tipo": "Película",
"Título": "Je Suis Karl",
"Duración": "127 min",
"Listed_in": "Dramas, películas internacionales",
"Cast": "Luna Wedler, Jannis Niewöhner, Milán Peschel, Edin Hasanović, Anna Fialová, Marlon Boess, Victor Boccard, Fleur Geffrier, Aziz Dyab, Mélanie Fouché, Elizaveta Maximová",
"date_added": "23 de septiembre de 2021"
]
También podemos simplificar la solicitud colocando las ID de documento en una matriz simple como se muestra en la siguiente:
curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: informes" -h "tipo de contenido: aplicación/json" -d '
"IDS": ["T3WNVombCK2AEZXPYTLJ", "W3WNVOMBCK2AEZXPYTLJ"]
'
La solicitud anterior debe realizar una acción similar.
Ejemplo 2: obtenga los documentos de múltiples indes
En el siguiente ejemplo, la solicitud obtiene múltiples documentos de diferentes índices como se muestra:
curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: informes" -h "tipo de contenido: aplicación/json" -d '
"Documentos": [
"_index": "netflix",
"_id": "T3WNVombCK2AEZXPYTLJ"
,
"_index": "Disney",
"_id": "8J4WWOMB1YF5VQFAKCE4"
]
'
La salida resultante es como se muestra:
Ejemplo 3: excluir campos específicos
Podemos excluir campos específicos de una solicitud dada utilizando los parámetros Source_include y Source_Exclude.
Un ejemplo es como se muestra:
curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: informes" -h "tipo de contenido: aplicación/json" -d '
"Documentos": [
"_index": "netflix",
"_id": "T3WNVombCK2AEZXPYTLJ",
"_source": falso
,
"_index": "netflix",
"_id": "T3WNVombCK2AEZXPYTLJ",
"_fuente":
"Incluir": ["Listed_in", "Release_Year", "Título"],
"Excluir": ["Descripción", "tipo", "date_added"]
]
'
La solicitud dada utiliza la fuente incluir y excluir para especificar qué campos desea recuperar en un documento determinado.
La salida resultante es como se muestra:
Conclusión
En esta publicación, discutimos los fundamentos de trabajar con API multi-get de Elasticsearch que le permite obtener múltiples documentos de varias fuentes en función de sus IDS. Siéntase libre de explorar los otros documentos para obtener más información.
Codificación feliz!