Elasticsearch Multi-Get

Elasticsearch Multi Get



En aquest article s'explicarà com utilitzar l'API d'obtenció múltiple d'Elasticsearch per obtenir diversos documents JSON en funció dels seus identificadors. A més, Elasticsearch us permet utilitzar una única consulta d'obtenció per recuperar els documents dels índexs utilitzant només els ID de document.

Explorem.







Sintaxi de la sol·licitud

A continuació es mostra la sintaxi de l'API multi-obtenció d'Elasticsearch:



GET /_mget
GET / /_mget

L'API multi-get admet diversos índexs que us permeten obtenir els documents encara que no estiguin al mateix índex.



La sol·licitud admet els paràmetres de ruta següents:





  1. <índex> – El nom de l'índex des del qual es poden recuperar els documents tal com especifiquen els seus identificadors.

També podeu especificar els altres paràmetres de consulta tal com es mostra:

  1. Preferència – Defineix el node o fragment preferit.
  2. Temps real – Si s'estableix en true, l'operació es realitza en temps real.
  3. Actualització – Força l'operació per actualitzar els fragments de destinació abans d'obtenir els documents especificats.
  4. Encaminament – Un valor que s'utilitza per encaminar les operacions a un fragment específic.
  5. Camps_botiga – Recupera els camps del document emmagatzemats en un índex en lloc del document.
  6. _font – Un valor booleà que defineix si la sol·licitud ha de retornar el camp _source o no.

La consulta requereix el cos, que inclou els valors següents:



  1. Docs – Especifica els documents que voleu obtenir. A més, aquesta secció admet els atributs següents:
    • _id – ID únic del document de destinació.
    • _índex – L'índex que conté el document de destinació.
    • Encaminament – La clau del fragment principal del document.
    • _font – Si és cert, inclou tots els camps d'origen; en cas contrari, els exclou.
    • _camps_emmagatzemats – Els camps_emmagatzemats que voleu incloure.
  2. Id – Els identificadors dels documents que voleu recollir.

Exemple 1: Obteniu diversos documents del mateix índex

L'exemple següent mostra com utilitzar l'API multi-obtenció d'Elasticsearch per recuperar els documents amb identificadors específics de l'índex de Netflix:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: informes' -H 'Tipus de contingut: aplicació/json' -d'
{
'docs': [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

La sol·licitud proporcionada hauria d'obtenir els documents amb els identificadors especificats de l'índex de Netflix. La sortida resultant és la que es mostra:

{
'docs': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_versió': 1,
'_seq_no': 0,
'_primary_term': 1,
'trobat': cert,
'_font': {
'durada': '90 min',
'listed_in': 'Documentals',
'country': 'Estats Units',
'date_added': '25 de setembre de 2021',
'show_id': 's1',
'director': 'Kirsten Johnson',
'any_de_estrena': 2020,
'puntuació': 'PG-13',
'descripció': 'A mesura que el seu pare s'acosta al final de la seva vida, la cineasta Kirsten Johnson escenifica la seva mort de maneres inventives i còmiques per ajudar-los a tots dos a afrontar l'inevitable'.
'type': 'Pel·lícula',
'title': 'Dick Johnson és mort'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AEzXPytlJ',
'_versió': 1,
'_seq_no': 12,
'_primary_term': 1,
'trobat': cert,
'_font': {
'country': 'Alemanya, República Txeca',
'show_id': 's13',
'director': 'Christian Schwochow',
'any_de_estrena': 2021,
'rating': 'TV-MA',
'descripció': 'Després que la majoria de la seva família sigui assassinada en un atemptat terrorista, una jove és induïda, sense saber-ho, a unir-se al mateix grup que els va matar'.
'type': 'Pel·lícula',
'title': 'Sóc Karl',
'durada': '127 min',
'listed_in': 'Drames, pel·lícules internacionals',
'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 de setembre de 2021'
}
}
]

}

També podem simplificar la sol·licitud posant els ID del document en una matriu senzilla tal com es mostra a continuació:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: informes' -H 'Tipus de contingut: aplicació/json' -d'
{
'ids': ['T3wnVoMBck2AEzXPytlJ', 'W3wnVoMBck2AEzXPytlJ']
}'

La sol·licitud anterior hauria de realitzar una acció similar.

Exemple 2: Obtenir els documents de diversos índexs

A l'exemple següent, la sol·licitud obté diversos documents de diferents índexs, tal com es mostra:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: informes' -H 'Tipus de contingut: aplicació/json' -d'
{
'docs': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_index': 'Disney',
'_id': '8j4wWoMB1yF5VqfaKCE4'
}
]
}'

La sortida resultant és la que es mostra:

Exemple 3: Exclou camps específics

Podem excloure camps específics d'una sol·licitud determinada mitjançant els paràmetres source_include i source_exclude.

Un exemple és el que es mostra:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: informes' -H 'Tipus de contingut: aplicació/json' -d'
{
'docs': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_font': fals
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_font': {
'inclou': [ 'listed_in', 'release_year', 'title' ],
'excloure': [ 'descripció', 'tipus', 'data_afegida' ]
}
}
]

}'

La sol·licitud proporcionada utilitza la font d'inclusió i exclusió per especificar quins camps voleu recuperar en un document determinat.

La sortida resultant és la que es mostra:

Conclusió

En aquesta publicació, vam parlar dels fonaments de treballar amb l'API multi-obtenció d'Elasticsearch que us permet obtenir diversos documents de diverses fonts en funció dels seus identificadors. No dubteu a explorar els altres documents per obtenir més informació.

Feliç codificació!