Come eseguire la query nidificata di ElasticSearch

Come eseguire la query nidificata di ElasticSearch
È possibile eseguire una query nidificata in Elasticsearch utilizzando il parametro nidificato. Una query nidificata cercherà gli oggetti di campo nidificati e restituirà il genitore radice del documento se esiste un oggetto corrispondente.

Come usare una query nidificata

Per eseguire una query nidificata, è necessario avere un indice che include una mappatura nidificata.

La seguente query crea un indice con una mappatura del campo nidificata.

Metti l'indice nidificato

"Mappings":
"proprietà":
"clienti":
"tipo": "nidificato"



Quindi, crea un documento contenente tipi di campo nidificati e alcuni dati come mostrato nella query di esempio di seguito:

Metti l'indice nidificato/_doc/1

"Categoria": "Electronic_Purchass",
"clienti": [

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

"First_name": "Michael",
"last_name": "Jean"
,

"First_name": "Hannah",
"last_name": "Newsome"

"

Per eseguire una query nidificata, possiamo eseguire un esempio come quello mostrato di seguito:

Ottieni nidificato-indice/_search

"query":
"nidificato":
"percorso": "clienti",
"query":
"bool":
"dovere": [
"incontro":
"clienti.first_name ":" Hannah "


"

,
"Inner_hits": "Highlight": "Fields": "Clienti.nome di battesimo":


Una risposta di esempio dalla query sopra è sotto:

La query nidificata utilizza i parametri come:

  1. Sentiero - Il parametro del percorso definisce il percorso verso l'oggetto nidificato sotto il quale eseguire la query di ricerca. Questo parametro è richiesto.
  2. Domanda - Questo parametro definisce la query di ricerca da eseguire sul percorso nidificato fornito. Simile al parametro del percorso, il parametro di query non è opzionale.
  3. Bool - La query booleana garantisce che i documenti corrispondano alla condizione specificata. Quando si dispone della query booleana impostata su Must, la clausola impostata deve essere nel record di corrispondenza. Considera la documentazione sulla query booleana per saperne di più.
  4. Inner_hits - Questo ritorna per ricerca di ricerca nella risposta della risposta nidificata. Accetta opzioni come un'evidenziale seguite dal campo per evidenziare.

Domande nidificate a più livelli

Puoi anche avere query nidificate multilivello come mostrato nell'indice di esempio:

Put /utenti

"Mappings":
"proprietà":
"Nome utente":
"tipo": "nidificato",
"proprietà":
"nome di battesimo":
"tipo": "testo"
,
"e-mail":
"tipo": "nidificato",
"proprietà":
"Provider":
"tipo": "testo"
,
"prefisso":
"tipo": "testo"







Aggiungi alcuni documenti con i dati come:

Put/utenti/_doc/1

"nome utente":
"First_name": "David",
"e-mail": [

"Provider": "Gmail.com ",
"Prefisso": "David123@"
,

"Provider": "Hotmail.com ",
"Prefisso": "Davidy123@"

"


Put/utenti/_doc/2

"nome utente":
"First_name": "Lucy",
"e-mail": [

"Provider": "Outlook.com ",
"Prefisso": "LucyMail@"
,

"Provider": "Protonmail.com ",
"Prefisso": "Lucyp@"

"

Per eseguire una query nidificata a più livelli, eseguire la richiesta come:

Get /utenti /_search

"query":
"nidificato":
"Path": "Nome utente",
"query":
"nidificato":
"Path": "Nome utente.e-mail",
"query":
"bool":
"dovere": [
"incontro":
"nome utente.e-mail.Provider ":" Gmail.com "

"






Un esempio della risposta dalla query risultante è sotto:

In chiusura

Questa guida discute come eseguire domande nidificate nidificate e multilivello in ElasticSearch.