Elasticsearch palauttaa oletusarvoisesti kaikki asiakirjan kentät suoritettuaan hakukyselyn. Tämä määritellään parametrilla _source, joka sisältää kaikki tietueeseen indeksoinnin aikana tallennetut tiedot.
curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: raportointi'Lähtö:
Et kuitenkaan ehkä halua hakea kaikkia kenttiä tietystä asiakirjasta. Tässä opetusohjelmassa opit valitsemaan asiakirjasta tiettyjä kenttiä.
Elasticsearch Fields -vaihtoehto
Kentät-parametrin avulla voimme hakea tiettyjä kenttiä hakupyynnössä. Lisäksi kenttäparametrin avulla voimme noutaa yhden tai useita kenttiä. Voit myös muotoilla päivämäärät ja paikkatietotyypit kenttäparametrilla.
Oletetaan esimerkiksi, että haluamme hakea indeksi-, tunnus-, otsikko-, julkaisuvuosi-, luettelo-, kesto- ja luokituskentät Netflix-hakemistosta, voimme suorittaa kyselyn alla olevan kuvan mukaisesti:
curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d'
{
'kysely': {
'ottelu': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'kentät': [
'indeksi',
'id',
'titteli',
'julkaisuvuosi',
'listed_in',
'kesto',
'arvosana'
],
'_source': false
}'
Yllä olevassa pyynnössä käytämme hakusovellusliittymää etsiäksemme asiakirjaa, jonka hakuparametrissa on määritetty id.
Käytämme sitten fields-parametria hakeaksemme tietyt kentät kohdeasiakirjasta.
Huomaa, että Elasticsearch sisältää oletuksena _source-parametrin, joka koostuu kaikista asiakirjakentistä. Varmistaaksemme, että haemme vain määritetyt kentät, poistamme _source-parametrin käytöstä:
Yllä olevan pyynnön pitäisi palauttaa seuraavanlainen vastaus:
{'otti': 1,
'timed_out': false,
'_shards': {
'yhteensä': 1,
'onnistui': 1,
'ohitettu': 0,
'epäonnistui': 0
},
'osumat': {
'kaikki yhteensä': {
'arvo': 1,
'relaatio': 'eq'
},
'max_score': 1,
'osumat': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'kentät': {
'listed_in': [
'Dokumentit'
],
'kesto': [
'90 min'
],
'julkaisuvuosi': [
2020
],
'luokitus': [
'PG-13'
],
'otsikko': [
'Dick Johnson on kuollut'
]
}
}
]
}
}
Voit myös käyttää _source-parametria määrittääksesi, mitkä kentät palautetaan hakukyselystä. Alla on esimerkki:
curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d'{
'_source': ['title', 'release_year', 'rating', 'duration'],
'kysely': {
'termi': {
'_id': {
'arvo': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}
}'
Tässä tapauksessa määritämme lähdeparametrissa kentät, jotka haluamme noutaa matriisina. Yllä olevan pyynnön pitäisi palauttaa vastaus kuvan mukaisesti:
{'otti': 0,
'timed_out': false,
'_shards': {
'yhteensä': 1,
'onnistui': 1,
'ohitettu': 0,
'epäonnistui': 0
},
'osumat': {
'kaikki yhteensä': {
'arvo': 1,
'relaatio': 'eq'
},
'max_score': 1,
'osumat': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_lähde': {
'duration': '90 min',
'release_year': 2020,
'luokitus': 'PG-13',
'title': 'Dick Johnson Is Dead'
}
}
]
}
}
Johtopäätös
Tässä artikkelissa opit hakemaan tiettyjä kenttiä hakupyynnöstä käyttämällä kenttiä ja _source-parametreja.
Saat lisätietoja Elasticsearchista ja sen ominaisuuksista tutustumalla aihetta koskeviin opetusohjelmiimme. Löydät varmasti jotain hyödyllistä.
Kiitos, että luit ja seuraa sinua seuraavassa!!