Hvordan du gjør elasticsearch nestet spørring

Hvordan du gjør elasticsearch nestet spørring
Du kan utføre et nestet spørsmål i Elasticsearch ved å bruke den nestede parameteren. Et nestet spørsmål vil søke i de nestede feltobjektene og returnere dokumentets rotforelder hvis det er et matchende objekt.

Hvordan bruke et nestet spørsmål

For å kjøre et nestet spørsmål, må du ha en indeks som inkluderer en nestet kartlegging.

Følgende spørring oppretter en indeks med en nestet feltkartlegging.

Sett nestet indeks

"Mappings":
"egenskaper":
"Kunder":
"type": "nestet"



Deretter lager du et dokument som inneholder nestede felttyper og noen data som vist i eksemplet på spørringen nedenfor:

Sett nestet-indeks/_doc/1

"Kategori": "Electronic_purchases",
"Kunder": [

"First_name": "Barbra",
"Last_name": "Walker"
,

"First_name": "Michael",
"Last_name": "Jean"
,

"First_name": "Hannah",
"Last_name": "Newsome"

]

For å kjøre et nestet spørsmål, kan vi utføre et eksempel som det som er vist nedenfor:

Få nestet-indeks/_Search

"spørring":
"Nested":
"Sti": "Kunder",
"spørring":
"bool":
"må": [
"kamp":
"Kunder.First_name ":" Hannah "


]

,
"Inner_hits": "Highlight": "Fields": "kunder.fornavn":


Et eksempel på svaret fra spørringen ovenfor er nedenfor:

Den nestede spørringen bruker parametere som:

  1. Sti - Sti -parameteren definerer banen til det nestede objektet som skal utføre søket. Denne parameteren er påkrevd.
  2. Spørsmål - Denne parameteren definerer søket for å utføre på den medfølgende nestede banen. I likhet med PATH-parameteren er spørringsparameteren ikke-mulighetell.
  3. Bool - Den boolske spørringen sikrer at dokumentene samsvarer med den spesifiserte tilstanden. Når du har den boolske spørringen satt til must, må den angitte klausulen være i den samsvarende posten. Vurder dokumentasjonen på den boolske spørringen for å lære mer.
  4. Indre_hits - Dette returnerer per søket i responsen fra den nestede responsen. Den aksepterer alternativer som høydepunkt etterfulgt av feltet for å fremheve.

Multi-nivå nestede spørsmål

Du kan også ha nestede spørsmål på flere nivåer som vist i eksempelindeksen:

Put /brukere

"Mappings":
"egenskaper":
"Brukernavn":
"type": "nestet",
"egenskaper":
"fornavn":
"Type": "Tekst"
,
"E -post":
"type": "nestet",
"egenskaper":
"forsørger":
"Type": "Tekst"
,
"prefiks":
"Type": "Tekst"







Legg til noen få dokumenter med dataene som:

Put/brukere/_doc/1

"Brukernavn":
"First_name": "David",
"E -post": [

"leverandør": "gmail.com ",
"Prefiks": "David123@"
,

"leverandør": "hotmail.com ",
"Prefiks": "Davidy123@"

]


Put/brukere/_doc/2

"Brukernavn":
"First_name": "Lucy",
"E -post": [

"leverandør": "Outlook.com ",
"Prefiks": "lucymail@"
,

"leverandør": "protonmail.com ",
"Prefiks": "Lucyp@"

]

For å utføre et nestet spørsmål på flere nivåer, utfør forespørselen som:

Få /brukere /_search

"spørring":
"Nested":
"Path": "Brukernavn",
"spørring":
"Nested":
"Sti": "Brukernavn.e -post ",
"spørring":
"bool":
"må": [
"kamp":
"Brukernavn.e -post.leverandør ":" gmail.com "

]






Et eksempel på responsen fra den resulterende spørringen er nedenfor:

I Avslutning

Denne guiden diskuterer hvordan du kjører nestede og flernivå nestede spørsmål i Elasticsearch.