Elasticsearch Multi-get

Elasticsearch Multi-get

Questo articolo discuterà su come utilizzare l'API multi-get Elasticsearch per recuperare più documenti JSON in base ai loro ID. Inoltre, ElasticSearch consente di utilizzare una singola query GET per recuperare i documenti dagli indici utilizzando solo gli ID del documento.

Esploriamo.

Richiedi sintassi

Di seguito è la sintassi per l'API multi-get Elasticsearch:

Get /_mget
Get // _ mget

L'API multi-get supporta più indici che consente di recuperare i documenti anche se non sono nello stesso indice.

La richiesta supporta i seguenti parametri del percorso:

  1. - Il nome dell'indice da cui recuperare i documenti come specificato dai loro ID.

È inoltre possibile specificare gli altri parametri di query come mostrato:

  1. Preferenza - Definisce il nodo o il frammento preferito.
  2. Tempo reale - Se impostato su true, l'operazione viene eseguita in tempo reale.
  3. ricaricare - Costringe l'operazione ad aggiornare i frammenti di destinazione prima di recuperare i documenti specificati.
  4. Routing - Un valore che viene utilizzato per instradare le operazioni su un frammento specifico.
  5. Store_fields - Recuperare i campi del documento archiviati in un indice anziché il documento.
  6. _fonte - Un valore booleano che definisce se la richiesta deve restituire il campo _source o no.

La query richiede il corpo, che include i seguenti valori:

  1. Documenti - Specifica i documenti che si desidera prendere. Inoltre, questa sezione supporta i seguenti attributi:
    • _id - ID univoco del documento target.
    • _indice - L'indice che contiene il documento target.
    • Routing - La chiave per il frammento principale del documento.
    • _fonte - Se vero, include tutti i campi di origine; Altrimenti, li esclude.
    • _Stored_fields - I Stored_fields che desideri includere.
  2. IDS - Gli ID dei documenti che desideri prendere.

Esempio 1: recuperare più documenti dallo stesso indice

L'esempio seguente mostra come utilizzare l'API multi-get ElasticSearch per recuperare i documenti con ID specifici dall'indice Netflix:

Curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: reporting" -h "contenuti -type: applicazione/json" -d '

"Documenti": [

"_id": "T3WNVombK2AEZXPYTLJ"
,

"_id": "W3WNVombK2AEZXPYTLJ"

"
'

La richiesta data deve recuperare i documenti con gli ID specificati dall'indice Netflix. L'output risultante è come mostrato:


"Documenti": [

"_index": "Netflix",
"_id": "T3WNVombK2AEZXPYTLJ",
"_version": 1,
"_seq_no": 0,
"_primary_term": 1,
"trovato": vero,
"_fonte":
"Durata": "90 min",
"List_in": "Documentari",
"Paese": "Stati Uniti",
"Date_added": "25 settembre 2021",
"show_id": "S1",
"Direttore": "Kirsten Johnson",
"Release_year": 2020,
"Valutazione": "PG-13",
"Descrizione": "Mentre suo padre si avvicina alla fine della sua vita, il regista Kirsten Johnson mette in scena la sua morte in modi inventivi e comici per aiutarli ad affrontare entrambi l'inevitabile.",
"tipo": "film",
"Titolo": "Dick Johnson è morto"

,

"_index": "Netflix",
"_id": "W3WNVombK2AEZXPYTLJ",
"_version": 1,
"_seq_no": 12,
"_primary_term": 1,
"trovato": vero,
"_fonte":
"Paese": "Germania, Repubblica ceca",
"show_id": "S13",
"Direttore": "Christian Schwochow",
"Release_year": 2021,
"Valutazione": "TV-MA",
"Descrizione": "Dopo che la maggior parte della sua famiglia viene assassinata da un bombardamento terroristico, una giovane donna viene inconsapevolmente attirata nell'adesione al gruppo stesso che li ha uccisi.",
"tipo": "film",
"Titolo": "Je Suis Karl",
"Durata": "127 min",
"elended_in": "drammi, film internazionali",
"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 settembre 2021"


"

Possiamo anche semplificare la richiesta mettendo gli ID del documento in un semplice array come mostrato da segue:

Curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: reporting" -h "contenuti -type: applicazione/json" -d '

"Ids": ["T3WnVombk2aezxpytlj", "W3WNVombK2AEZXPYTLJ"]
'

La richiesta precedente dovrebbe eseguire un'azione simile.

Esempio 2: prendere i documenti da più indicazioni

Nell'esempio seguente, la richiesta recupera più documenti da indici diversi come mostrato:

Curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: reporting" -h "contenuti -type: applicazione/json" -d '

"Documenti": [

"_index": "Netflix",
"_id": "T3WNVombK2AEZXPYTLJ"
,

"_index": "Disney",
"_id": "8j4wwomb1yf5vqfakce4"

"
'

L'output risultante è come mostrato:

Esempio 3: escludere campi specifici

Possiamo escludere campi specifici da una determinata richiesta utilizzando i parametri Source_Include e Source_Exclude.

Un esempio è come mostrato:

Curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: reporting" -h "contenuti -type: applicazione/json" -d '

"Documenti": [

"_index": "Netflix",
"_id": "T3WNVombK2AEZXPYTLJ",
"_source": falso
,

"_index": "Netflix",
"_id": "T3WNVombK2AEZXPYTLJ",
"_fonte":
"Includi": ["List_in", "Release_year", "Titolo"],
"Exclude": ["Descrizione", "Type", "Date_Added"]


"
'

La richiesta data utilizza l'origine include ed escludere per specificare quali campi si desidera recuperare in un determinato documento.

L'output risultante è come mostrato:

Conclusione

In questo post, abbiamo discusso dei fondamenti del lavoro con API multi-get di Elasticsearch che ti consente di recuperare più documenti da varie fonti in base ai loro ID. Sentiti libero di esplorare gli altri documenti per ulteriori informazioni.

Codice felice!