Elasticsearch Multi-Get

Elasticsearch Multi-Get

Cet article discutera de la façon d'utiliser l'API multi-get Elasticsearch pour récupérer plusieurs documents JSON en fonction de leurs ID. De plus, Elasticsearch vous permet d'utiliser une seule requête pour récupérer les documents des indices en utilisant uniquement les ID de document.

Explorons.

Demander une syntaxe

Ce qui suit est la syntaxe de l'API multi-get Elasticsearch:

Get / _mget
Obtenir // _ mget

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

La demande prend en charge les paramètres de chemin suivants:

  1. - Le nom de l'index à partir de laquelle récupérer les documents spécifiés par leurs identifiants.

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 - S'il est défini sur true, l'opération est effectuée en temps réel.
  3. Rafraîchir - Force l'opération pour actualiser les éclats cibles avant de récupérer les documents spécifiés.
  4. Routage - Une valeur utilisée pour acheminer les opérations vers un éclat spécifique.
  5. Store_fields - Récupère les champs de document stockés dans un index plutôt que le document.
  6. _source - Une valeur booléenne qui définit si la demande doit renvoyer le champ _Source ou non.

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

  1. Docs - 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'indice qui contient le document cible.
    • Routage - La clé pour l'éclat principal du document.
    • _source - Si cela est vrai, il inclut tous les champs source; Sinon, cela les exclut.
    • _stored_fields - Les zones stockés que vous souhaitez inclure.
  2. Identifiant - Les identifiants des documents que vous souhaitez récupérer.

Exemple 1: récupérer plusieurs documents 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 de l'index Netflix:

curl -xget "http: // localhost: 9200 / netflix / _mget" -h "kbn-xsrf: reporting" -h "contenu-type: application / json" -d '

"Docs": [

"_id": "t3wnvombck2aezxpytlj"
,

"_id": "w3wnvombck2aezxpytlj"

]]
'

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


"Docs": [

"_index": "Netflix",
"_id": "t3wnvombck2aezxpytlj",
"_version 1,
"_seq_no": 0,
"_primary_term": 1,
"Found": vrai,
"_source":
"durée": "90 min",
"listed_in": "documentaires",
"pays": "États-Unis",
"Date_added": "25 septembre 2021",
"show_id": "s1",
"Directeur": "Kirsten Johnson",
"release_year": 2020,
"Note": "PG-13",
"Description": "Alors que son père approche de la fin de sa vie, la cinéaste Kirsten Johnson organise sa mort de manière inventive et comique pour les aider à faire face à l'inévitable.",
"Type": "film",
"Titre": "Dick Johnson est mort"

,

"_index": "Netflix",
"_id": "w3wnvombck2aezxpytlj",
"_version 1,
"_seq_no": 12,
"_primary_term": 1,
"Found": vrai,
"_source":
"pays": "Allemagne, République tchèque",
"show_id": "s13",
"Directeur": "Christian Schwochow",
"release_year": 2021,
"Note": "TV-MA",
"Description": "Une fois que la majeure partie de sa famille est assassinée dans un bombardement terroriste, une jeune femme est inconsciemment attirée de rejoindre le groupe même qui les a tués.",
"Type": "film",
"Titre": "JE Suis Karl",
"durée": "127 min",
"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 mettant les ID de document dans un tableau simple comme indiqué dans ce qui suit:

curl -xget "http: // localhost: 9200 / netflix / _mget" -h "kbn-xsrf: reporting" -h "contenu-type: application / json" -d '

"ids": ["t3wnvombck2aezxpytlj", "w3wnvombck2aezxpytlj"]
'

La demande précédente doit effectuer une action similaire.

Exemple 2: récupérer les documents de plusieurs indices

Dans l'exemple suivant, la demande récupère plusieurs documents à partir de différents indices comme indiqué:

curl -xget "http: // localhost: 9200 / _mget" -h "kbn-xsrf: reportage" -h "contenu-type: application / json" -d '

"Docs": [

"_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 demande donnée en utilisant les paramètres source_include et source_exclude.

Un exemple est comme indiqué:

curl -xget "http: // localhost: 9200 / _mget" -h "kbn-xsrf: reportage" -h "contenu-type: application / json" -d '

"Docs": [

"_index": "Netflix",
"_id": "t3wnvombck2aezxpytlj",
"_source": faux
,

"_index": "Netflix",
"_id": "t3wnvombck2aezxpytlj",
"_source":
"Inclure": ["listed_in", "release_year", "title"],
"exclure": ["Description", "type", "date_added"]


]]
'

La demande donnée utilise la source Inclure et exclure pour spécifier quels 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 du travail avec 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.

Codage heureux!