Elasticsearch atlasiet konkrētus laukus

Elasticsearch Atlasiet Konkretus Laukus



Veicot meklēšanas vaicājumu, Elasticsearch pēc noklusējuma atgriezīs visus dokumenta laukus. To nosaka parametrs _source, kas satur visus indeksēšanas laikā ierakstā saglabātos datus.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: ziņošana'

Izvade:







Tomēr jūs, iespējams, nevēlaties izgūt visus laukus no dotā dokumenta. Šajā apmācībā jūs uzzināsit, kā atlasīt konkrētus laukus no dokumenta.



Elasticsearch lauku opcija

Lauku parametrs ļauj mums izgūt konkrētus laukus meklēšanas pieprasījumā. Turklāt lauka parametrs ļaus mums iegūt vienu vai vairākus laukus. Varat arī formatēt datumus un telpisko datu tipus, izmantojot lauku parametru.



Piemēram, pieņemsim, ka no Netflix indeksa vēlamies izgūt indeksu, id, nosaukumu, release_year, kas uzskaitīti laukos, ilgums un reitings, mēs varam izpildīt vaicājumu, kā parādīts tālāk:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: reporting' -H 'Satura veids: lietojumprogramma/json' -d'
{
'vaicājums': {
'match': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'lauki': [
'indekss',
'id',
'nosaukums',
'release_year',
'listed_in',
'ilgums',
'vērtējums'
],
'_source': nepatiess

}'

Iepriekš minētajā pieprasījumā mēs izmantojam meklēšanas API, lai meklētu dokumentā ar atbilstības parametrā norādīto ID.

Pēc tam mēs izmantojam lauku parametru, lai iegūtu konkrētus laukus no mērķa dokumenta.



Ņemiet vērā, ka Elasticsearch pēc noklusējuma ietvers parametru _source, kas sastāv no visiem dokumenta laukiem. Lai nodrošinātu, ka tiek iegūti tikai norādītie lauki, mēs izslēdzam parametru _source:

Iepriekš norādītajam pieprasījumam ir jāsniedz atbilde, kā parādīts:

{
'paņēma': 1,
'timed_out': nepatiess,
'_shards': {
'kopā': 1,
'veiksmīgi': 1,
'izlaists': 0,
'neizdevās': 0
},
'trāpījumi': {
'Kopā': {
'vērtība': 1,
'relation': 'eq'
},
'max_score': 1,
'trāpījumi': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'lauki': {
'listed_in': [
'Dokumentālās filmas'
],
'ilgums': [
'90 minūtes'
],
'release_year': [
2020. gads
],
'vērtējums': [
'PG-13'
],
'nosaukums': [
'Diks Džonsons ir miris'
]
}
}
]
}
}

Varat arī izmantot parametru _source, lai noteiktu, kuri lauki jāatgriež no meklēšanas vaicājuma. Piemērs ir parādīts zemāk:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: ziņošana' -H 'Satura veids: lietojumprogramma/json' -d'
{
'_source': ['title', 'release_year', 'rating', 'duration'],
'vaicājums': {
'jēdziens': {
'_id': {
'vērtība': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

Šajā gadījumā mēs norādām laukus, kurus vēlamies izgūt kā masīvu avota parametrā. Iepriekš norādītajam pieprasījumam ir jāatgriež atbilde, kā parādīts:

{
'paņēma': 0,
'timed_out': nepatiess,
'_shards': {
'kopā': 1,
'veiksmīgi': 1,
'izlaists': 0,
'neizdevās': 0
},
'trāpījumi': {
'Kopā': {
'vērtība': 1,
'relation': 'eq'
},
'max_score': 1,
'trāpījumi': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_avots': {
'ilgums': '90 min',
'release_year': 2020,
'vērtējums': 'PG-13',
'title': 'Diks Džonsons ir miris'
}
}
]
}

}

Secinājums

Šajā rakstā jūs uzzinājāt, kā no meklēšanas pieprasījuma iegūt konkrētus laukus, izmantojot laukus un parametrus _source.

Lai uzzinātu vairāk par Elasticsearch un tā iespējām, skatiet mūsu apmācības par šo tēmu. Jūs noteikti atradīsit kaut ko noderīgu.

Paldies, ka lasījāt, un gaidīsim jūs nākamajā!!