Elasticsearch Vyberte konkrétne polia

Elasticsearch Vyberte Konkretne Polia



Elasticsearch predvolene vráti všetky polia v dokumente po vykonaní vyhľadávacieho dopytu. Toto je definované parametrom _source, ktorý obsahuje všetky údaje uložené v zázname počas indexovania.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: reporting'

Výkon:







Možno však nebudete chcieť získať všetky polia z daného dokumentu. V tomto návode sa naučíte, ako vybrať konkrétne polia z dokumentu.



Možnosť Elasticsearch Fields

Parameter polí nám umožňuje získať špecifické polia v požiadavke na vyhľadávanie. Okrem toho nám parameter poľa umožní načítať jedno alebo viacero polí. Môžete tiež formátovať dátumy a typy priestorových údajov pomocou parametra polí.



Predpokladajme napríklad, že chceme získať index, id, title, release_year, uvedené v poliach, trvanie a hodnotenie z indexu Netflix, môžeme spustiť dotaz, ako je uvedené nižšie:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'dopyt': {
'zápas': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'polia': [
'index',
'id',
'titul',
'rok_vydania',
'listed_in',
'trvanie',
'hodnotenie'
],
'_source': nepravda

}'

Vo vyššie uvedenej požiadavke používame vyhľadávacie API na vyhľadávanie dokumentu so zadaným ID v parametri zhody.

Potom použijeme parameter polí na získanie konkrétnych polí z cieľového dokumentu.



Všimnite si, že Elasticsearch bude štandardne obsahovať parameter _source, ktorý pozostáva zo všetkých polí dokumentu. Aby sme zaistili, že načítame iba špecifikované polia, vypneme parameter _source:

Vyššie uvedená žiadosť by mala vrátiť odpoveď, ako je znázornené:

{
'vzal': 1,
'timed_out': nepravda,
'_shards': {
'celkom': 1,
'úspešný': 1,
'preskočené': 0,
'nepodarilo sa': 0
},
'hits': {
'Celkom': {
'value': 1,
'relation': 'eq'
},
'max_score': 1,
'zásahy': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_skóre': 1,
'fields': {
'listed_in': [
'dokumentárne filmy'
],
'trvanie': [
'90 minút'
],
'release_year': [
2020
],
'hodnotenie': [
'PG-13'
],
'titul': [
'Dick Johnson je mŕtvy'
]
}
}
]
}
}

Parameter _source môžete použiť aj na definovanie, ktoré polia sa majú vrátiť z vyhľadávacieho dotazu. Príklad je uvedený nižšie:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'_source': ['title', 'release_year', 'rating', 'duration'],
'dopyt': {
'termín': {
'_id': {
'value': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

V tomto prípade špecifikujeme polia, ktoré chceme získať ako pole v zdrojovom parametri. Vyššie uvedená žiadosť by mala vrátiť odpoveď, ako je znázornené:

{
'vzal': 0,
'timed_out': nepravda,
'_shards': {
'celkom': 1,
'úspešný': 1,
'preskočené': 0,
'nepodarilo sa': 0
},
'hits': {
'Celkom': {
'value': 1,
'relation': 'eq'
},
'max_score': 1,
'zásahy': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_skóre': 1,
'_source': {
'duration': '90 min',
'release_year': 2020,
'rating': 'PG-13',
'title': 'Dick Johnson je mŕtvy'
}
}
]
}

}

Záver

V tomto článku ste sa naučili, ako získať konkrétne polia z požiadavky vyhľadávania pomocou polí a parametrov _source.

Ak sa chcete dozvedieť viac o Elasticsearch a jeho možnostiach, pozrite si naše návody na túto tému. Zaručene nájdete niečo užitočné.

Ďakujem za prečítanie a chyťte sa nabudúce!!