Elasticsearch Izberite Specific Fields

Elasticsearch Izberite Specific Fields



Elasticsearch bo po izvedbi iskalne poizvedbe privzeto vrnil vsa polja v dokumentu. To definira parameter _source, ki vsebuje vse podatke, shranjene v zapisu med indeksiranjem.

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

Izhod:







Vendar pa morda ne boste želeli pridobiti vseh polj iz danega dokumenta. V tej vadnici se boste naučili, kako izbrati določena polja v dokumentu.



Možnost Elasticsearch Fields

Parameter fields nam omogoča, da v iskalni zahtevi pridobimo določena polja. Poleg tega nam bo parameter polja omogočil pridobivanje enega ali več polj. S parametrom fields lahko oblikujete tudi datume in tipe prostorskih podatkov.



Recimo, da želimo na primer pridobiti polja indeksa, id-ja, naslova, leta izdaje, navedenega v, trajanja in ocene iz indeksa Netflix, lahko izvedemo poizvedbo, kot je prikazano spodaj:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: poročanje' -H 'Vrsta vsebine: aplikacija/json' -d'
{
'poizvedba': {
'ujemanje': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'polja': [
'indeks',
'id',
'naslov',
'leto_izdaje',
'uvrščeno_v',
'trajanje',
'ocena'
],
'_vir': napačno

}'

V zgornji zahtevi uporabljamo iskalni API za iskanje dokumenta z navedenim ID-jem v parametru ujemanja.

Nato uporabimo parameter fields za pridobivanje določenih polj iz ciljnega dokumenta.



Upoštevajte, da bo Elasticsearch privzeto vključeval parameter _source, sestavljen iz vseh polj dokumenta. Da zagotovimo, da pridobimo samo določena polja, izklopimo parameter _source:

Zgornja zahteva bi morala vrniti odgovor, kot je prikazano:

{
'vzel': 1,
'timed_out': napačno,
'_odlomki': {
'skupaj': 1,
'uspešno': 1,
'preskočeno': 0,
'neuspešno': 0
},
'zadetki': {
'skupaj': {
'vrednost': 1,
'relacija': 'eq'
},
'max_score': 1,
'zadetki': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'polja': {
'uvrščeno_v': [
'Dokumentarci'
],
'trajanje': [
'90 min'
],
'leto_izdaje': [
2020
],
'ocena': [
'PG-13'
],
'naslov': [
'Dick Johnson je mrtev'
]
}
}
]
}
}

Uporabite lahko tudi parameter _source, da določite, katera polja naj vrne iskalna poizvedba. Spodaj je prikazan primer:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: poročanje' -H 'Vrsta vsebine: aplikacija/json' -d'
{
'_vir': ['naslov', 'leto_izida', 'ocena', 'trajanje'],
'poizvedba': {
'term': {
'_id': {
'vrednost': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

V tem primeru določimo polja, ki jih želimo pridobiti kot matriko v izvornem parametru. Zgornja zahteva mora vrniti odgovor, kot je prikazano:

{
'vzel': 0,
'timed_out': napačno,
'_odlomki': {
'skupaj': 1,
'uspešno': 1,
'preskočeno': 0,
'neuspešno': 0
},
'zadetki': {
'skupaj': {
'vrednost': 1,
'relacija': 'eq'
},
'max_score': 1,
'zadetki': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_vir': {
'trajanje': '90 min',
'leto_izdaje': 2020,
'ocena': 'PG-13',
'title': 'Dick Johnson je mrtev'
}
}
]
}

}

Zaključek

V tem članku ste se naučili pridobiti določena polja iz iskalne zahteve z uporabo parametrov fields in _source.

Če želite izvedeti več o Elasticsearch in njegovih zmožnostih, si oglejte naše vadnice na to temo. Zagotovo boste našli kaj koristnega.

Hvala za branje in se vidimo v naslednjem!!