Elasticsearch Multi-Get

Elasticsearch Multi Get



Tento článek pojednává o tom, jak používat rozhraní Elasticsearch multi-get API k načítání více dokumentů JSON na základě jejich ID. Kromě toho vám Elasticsearch umožňuje použít jediný dotaz k získání dokumentů z indexů pouze pomocí ID dokumentů.

Pojďme prozkoumat.







Syntaxe požadavku

Následuje syntaxe rozhraní Elasticsearch multi-get API:



GET /_mget
GET / /_mget

Multi-get API podporuje více indexů, což vám umožňuje načítat dokumenty, i když nejsou ve stejném indexu.



Požadavek podporuje následující parametry cesty:





  1. – Název indexu, ze kterého se mají načíst dokumenty podle jejich ID.

Můžete také zadat další parametry dotazu, jak je uvedeno:

  1. Přednost – Definuje preferovaný uzel nebo fragment.
  2. Reálný čas – Pokud je nastaveno na hodnotu true, operace se provádí v reálném čase.
  3. Obnovit – Vynutí operaci obnovit cílové fragmenty před načtením zadaných dokumentů.
  4. Směrování – Hodnota, která se používá ke směrování operací do konkrétního datového fragmentu.
  5. Store_fields – Načte pole dokumentu uložená v rejstříku místo dokumentu.
  6. _zdroj – Booleovská hodnota, která definuje, zda má požadavek vrátit pole _source nebo ne.

Dotaz vyžaduje tělo, které obsahuje následující hodnoty:



  1. Docs – Určuje dokumenty, které chcete načíst. Kromě toho tato část podporuje následující atributy:
    • _id – Jedinečné ID cílového dokumentu.
    • _index – Index, který obsahuje cílový dokument.
    • Směrování – Klíč pro primární fragment dokumentu.
    • _zdroj – Pokud je true, zahrnuje všechna zdrojová pole; jinak je vylučuje.
    • _uložená_pole – Uložená_pole, která chcete zahrnout.
  2. ID – ID dokumentů, které chcete načíst.

Příklad 1: Načtení více dokumentů ze stejného rejstříku

Následující příklad ukazuje, jak použít rozhraní Elasticsearch multi-get API k načtení dokumentů se specifickými ID z indexu Netflix:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'docs': [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

Daný požadavek by měl načíst dokumenty se zadanými ID z indexu Netflix. Výsledný výstup je následující:

{
'docs': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_version': 1,
'_seq_no': 0,
'_primary_term': 1,
'nalezeno': pravda,
'_source': {
'duration': '90 min',
'listed_in': 'Dokumenty',
'country': 'Spojené státy',
'date_added': '25. září 2021',
'show_id': 's1',
'ředitel': 'Kirsten Johnson',
'release_year': 2020,
'rating': 'PG-13',
'description': 'Jak se její otec blíží ke konci života, filmařka Kirsten Johnson zinscenuje jeho smrt vynalézavými a komickými způsoby, aby jim oběma pomohla čelit nevyhnutelnému.',
'type': 'Film',
'title': 'Dick Johnson je mrtvý'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AEzXPytlJ',
'_version': 1,
'_seq_no': 12,
'_primary_term': 1,
'nalezeno': pravda,
'_source': {
'country': 'Německo, Česká republika',
'show_id': 's13',
'ředitel': 'Christian Schwochow',
'release_year': 2021,
'rating': 'TV-MA',
'description': 'Poté, co je většina její rodiny zavražděna při teroristickém bombovém útoku, je mladá žena nevědomky nalákána, aby se přidala právě ke skupině, která je zabila.',
'type': 'Film',
'title': 'Jsem Karel',
'duration': '127 min',
'listed_in': 'Drama, mezinárodní filmy',
'cast': 'Luna Wedler, Jannis Niewöhner, Milan Peschel, Edin Hasanović, Anna Fialová, Marlon Boess, Victor Boccard, Fleur Geffrier, Aziz Dyab, Melání Fouché, Elizaveta Maximová',
'date_added': '23. září 2021'
}
}
]

}

Požadavek můžeme také zjednodušit vložením ID dokumentů do jednoduchého pole, jak je znázorněno v následujícím:

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

Předchozí požadavek by měl provést podobnou akci.

Příklad 2: Načtení dokumentů z více indexů

V následujícím příkladu požadavek načte více dokumentů z různých indexů, jak je znázorněno:

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

Výsledný výstup je následující:

Příklad 3: Vyloučení konkrétních polí

Konkrétní pole můžeme z daného požadavku vyloučit pomocí parametrů source_include a source_exclude.

Příklad je uveden:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'docs': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': nepravda
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': {
'include': [ 'listed_in', 'release_year', 'title' ],
'exclude': [ 'description', 'type', 'date_added' ]
}
}
]

}'

Daný požadavek používá zdrojové zahrnutí a vyloučení k určení, která pole chcete v daném dokumentu načíst.

Výsledný výstup je následující:

Závěr

V tomto příspěvku jsme diskutovali o základech práce s rozhraním Elasticsearch multi-get API, které vám umožňuje načítat více dokumentů z různých zdrojů na základě jejich ID. Neváhejte a prozkoumejte další dokumenty pro více informací.

Šťastné kódování!