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:
- - Il nome dell'indice da cui recuperare i documenti come specificato dai loro ID.
È inoltre possibile specificare gli altri parametri di query come mostrato:
- Preferenza - Definisce il nodo o il frammento preferito.
- Tempo reale - Se impostato su true, l'operazione viene eseguita in tempo reale.
- ricaricare - Costringe l'operazione ad aggiornare i frammenti di destinazione prima di recuperare i documenti specificati.
- Routing - Un valore che viene utilizzato per instradare le operazioni su un frammento specifico.
- Store_fields - Recuperare i campi del documento archiviati in un indice anziché il documento.
- _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:
- 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.
- 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!