Elasticsearch Pasirinkite konkrečius laukus

Elasticsearch Pasirinkite Konkrecius Laukus



Atlikusi paieškos užklausą, „Elasticsearch“ pagal nutylėjimą grąžins visus dokumento laukus. Tai apibrėžiama parametru _source, kuriame yra visi duomenys, saugomi įraše indeksavimo metu.

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

Išvestis:







Tačiau galbūt nenorėsite gauti visų laukų iš nurodyto dokumento. Šiame vadove sužinosite, kaip iš dokumento pasirinkti konkrečius laukus.



Elasticsearch laukų parinktis

Laukų parametras leidžia mums gauti konkrečius paieškos užklausos laukus. Be to, lauko parametras leis mums gauti vieną arba kelis laukus. Taip pat galite formatuoti datas ir erdvinių duomenų tipus naudodami laukų parametrą.



Pavyzdžiui, tarkime, kad norime iš „Netflix“ indekso gauti indeksą, ID, pavadinimą, išleidimo_metus, išvardytus laukuose, trukmė ir įvertinimas, galime vykdyti užklausą, kaip parodyta toliau:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: ataskaitos' -H 'Turinio tipas: programa/json' -d'
{
'užklausa': {
'match': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'laukai': [
'indeksas',
'id',
'titulas',
'išleidimo_metai',
'listed_in',
'trukmė',
'įvertinimas'
],
'_source': klaidinga

}'

Aukščiau pateiktoje užklausoje naudojame paieškos API, norėdami ieškoti dokumento, kurio atitikties parametre nurodytas ID.

Tada mes naudojame laukų parametrą, kad gautume konkrečius laukus iš tikslinio dokumento.



Atminkite, kad Elasticsearch pagal numatytuosius nustatymus įtrauks parametrą _source, kurį sudaro visi dokumento laukai. Siekdami užtikrinti, kad gautume tik nurodytus laukus, išjungiame parametrą _source:

Aukščiau pateikta užklausa turėtų pateikti atsakymą, kaip parodyta:

{
'paėmė': 1,
'timed_out': klaidinga,
'_shards': {
„iš viso“: 1,
'sėkmingas': 1,
'praleistas': 0,
„nepavyko“: 0
},
'hitai': {
'iš viso': {
'vertė': 1,
'ryšys': 'ekv'
},
'max_score': 1,
'hitai': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'laukai': {
'listed_in': [
'Dokumentiniai filmai'
],
'trukmė': [
'90 min'
],
'išleidimo_metai': [
2020 m
],
'įvertinimas': [
'PG-13'
],
'pavadinimas': [
'Dikas Džonsonas miręs'
]
}
}
]
}
}

Taip pat galite naudoti parametrą _source norėdami apibrėžti, kuriuos laukus grąžinti iš paieškos užklausos. Pavyzdys parodytas žemiau:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: ataskaitų teikimas' -H 'Turinio tipas: programa/json' -d'
{
'_source': ['pavadinimas', 'išleidimo_metai', 'įvertinimas', 'trukmė'],
'užklausa': {
'terminas': {
'_id': {
'vertė': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

Tokiu atveju šaltinio parametre nurodome laukus, kuriuos norime gauti kaip masyvą. Aukščiau pateiktas prašymas turi pateikti atsakymą, kaip parodyta:

{
'paėmė': 0,
'timed_out': klaidinga,
'_shards': {
'iš viso': 1,
'sėkmingas': 1,
'praleistas': 0,
„nepavyko“: 0
},
'hitai': {
'iš viso': {
'vertė': 1,
'ryšys': 'ekv'
},
'max_score': 1,
'hitai': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_source': {
'trukmė': '90 min',
'release_year': 2020 m.,
'įvertinimas': 'PG-13',
'pavadinimas': 'Dikas Džonsonas miręs'
}
}
]
}

}

Išvada

Šiame straipsnyje sužinojote, kaip gauti konkrečius laukus iš paieškos užklausos naudojant laukus ir _source parametrus.

Norėdami sužinoti daugiau apie Elasticsearch ir jos galimybes, peržiūrėkite mūsų mokymo programas šia tema. Neabejotinai rasite ką nors naudingo.

Dėkojame, kad skaitėte ir sutiksime kitą kartą!!