Multi-Get Elasticsearch

Multi Get Elasticsearch



Cet article explique comment utiliser l'API multi-get Elasticsearch pour récupérer plusieurs documents JSON en fonction de leurs identifiants. De plus, Elasticsearch vous permet d'utiliser une seule requête get pour récupérer les documents à partir d'index en utilisant uniquement les ID de document.

Explorons.







Syntaxe de la requête

Voici la syntaxe de l'API multi-get Elasticsearch :



OBTENIR /_mget
GET / /_mget

L'API multi-get prend en charge plusieurs index, ce qui vous permet de récupérer les documents même s'ils ne se trouvent pas dans le même index.



La requête prend en charge les paramètres de chemin suivants :





  1. – Le nom de l'index à partir duquel récupérer les documents tel que spécifié par leurs ID.

Vous pouvez également spécifier les autres paramètres de requête comme indiqué :

  1. Préférence – Définit le nœud ou le fragment préféré.
  2. Temps réel – Si la valeur est true, l'opération est effectuée en temps réel.
  3. Rafraîchir – Force l'opération à actualiser les fragments cibles avant de récupérer les documents spécifiés.
  4. Routage – Une valeur utilisée pour acheminer les opérations vers une partition spécifique.
  5. Store_fields – Récupère les champs du document stockés dans un index plutôt que le document.
  6. _la source – Une valeur booléenne qui définit si la requête doit retourner le champ _source ou non.

La requête nécessite le corps, qui inclut les valeurs suivantes :



  1. Documents – Spécifie les documents que vous souhaitez récupérer. De plus, cette section prend en charge les attributs suivants :
    • _identifiant – ID unique du document cible.
    • _indice – L'index qui contient le document cible.
    • Routage – La clé de la partition principale du document.
    • _la source – Si vrai, il inclut tous les champs source ; sinon, il les exclut.
    • _stored_fields – Les champs_stockés que vous souhaitez inclure.
  2. identifiants – Les identifiants des documents que vous souhaitez récupérer.

Exemple 1 : Récupérer plusieurs documents à partir du même index

L'exemple suivant montre comment utiliser l'API multi-get Elasticsearch pour récupérer les documents avec des ID spécifiques à partir de l'index Netflix :

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf : rapports' -H 'Type de contenu : application/json' -d'
{
'documents': [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

La demande donnée doit récupérer les documents avec les identifiants spécifiés à partir de l'index Netflix. La sortie résultante est comme indiqué :

{
'documents': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_version 1,
'_seq_no': 0,
'_terme_primaire': 1,
'trouvé': vrai,
'_la source': {
'durée': '90 min',
'listed_in': 'Documentaires',
'pays': 'États-Unis',
'date_added': '25 septembre 2021',
'show_id': 's1',
'réalisateur': 'Kirsten Johnson',
'release_year': 2020,
'classement': 'PG-13',
'description': 'Alors que son père approche de la fin de sa vie, la cinéaste Kirsten Johnson met en scène sa mort de manière inventive et comique pour les aider tous les deux à faire face à l'inévitable.',
'type': 'Film',
'title': 'Dick Johnson est mort'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AEzXPytlJ',
'_version 1,
'_seq_no': 12,
'_terme_primaire': 1,
'trouvé': vrai,
'_la source': {
'country': 'Allemagne, République tchèque',
'show_id': 's13',
'réalisateur': 'Christian Schwochow',
'release_year': 2021,
'classement': 'TV-MA',
'description': 'Après que la majeure partie de sa famille ait été assassinée dans un attentat terroriste, une jeune femme est incitée sans le savoir à rejoindre le groupe même qui les a tués.',
'type': 'Film',
        'title': 'Je Suis Karl',
'durée': '127 minutes',
'listed_in': 'Drames, Films internationaux',
'cast': 'Luna Wedler, Jannis Niewöhner, Milan Peschel, Edin Hasanović, Anna Fialová, Marlon Boess, Victor Boccard, Fleur Geffrier, Aziz Dyab, Mélanie Fouché, Elizaveta Maximová',
'date_added': '23 septembre 2021'
}
}
]

}

Nous pouvons également simplifier la demande en plaçant les ID de document dans un tableau simple, comme illustré ci-dessous :

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf : rapports' -H 'Type de contenu : application/json' -d'
{
'ids': ['T3wnVoMBck2AEzXPytlJ', 'W3wnVoMBck2AEzXPytlJ']
}'

La requête précédente doit effectuer une action similaire.

Exemple 2 : Récupérer les documents à partir de plusieurs indices

Dans l'exemple suivant, la requête récupère plusieurs documents à partir de différents index, comme indiqué :

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf : rapports' -H 'Type de contenu : application/json' -d'
{
'documents': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_index': 'disney',
'_id': '8j4wWoMB1yF5VqfaKCE4'
}
]
}'

La sortie résultante est comme indiqué :

Exemple 3 : Exclure des champs spécifiques

Nous pouvons exclure des champs spécifiques d'une requête donnée à l'aide des paramètres source_include et source_exclude.

Un exemple est comme indiqué:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf : rapports' -H 'Type de contenu : application/json' -d'
{
'documents': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': faux
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_la source': {
'include': [ 'listed_in', 'release_year', 'title' ],
'exclude': [ 'description', 'type', 'date_ajoutée' ]
}
}
]

}'

La requête donnée utilise l'inclusion et l'exclusion de la source pour spécifier les champs que vous souhaitez récupérer dans un document donné.

La sortie résultante est comme indiqué :

Conclusion

Dans cet article, nous avons discuté des principes fondamentaux de l'utilisation de l'API multi-get Elasticsearch qui vous permet de récupérer plusieurs documents à partir de diverses sources en fonction de leurs identifiants. N'hésitez pas à explorer les autres documents pour plus d'informations.

Bon codage !