Wie man Elasticsearch verschachtelte Abfrage macht

Wie man Elasticsearch verschachtelte Abfrage macht
Sie können eine verschachtelte Anfrage in Elasticsearch mit dem verschachtelten Parameter ausführen. Eine verschachtelte Anfrage durchsucht die verschachtelten Feldobjekte und gibt das Stammelett der Dokument zurück, wenn ein übereinstimmendes Objekt vorliegt.

So verwenden Sie eine verschachtelte Anfrage

Um eine verschachtelte Anfrage durchzuführen, müssen Sie einen Index haben, der eine verschachtelte Zuordnung enthält.

Die folgende Abfrage erstellt einen Index mit einer verschachtelten Feldzuordnung.

Verschachtelte Index setzen

"Mappings":
"Eigenschaften":
"Kunden":
"Typ": "verschachtelt"



Erstellen Sie anschließend ein Dokument mit verschachtelten Feldtypen und einigen Daten, wie in der folgenden Beispielabfrage gezeigt:

Legen Sie verschachtelt-Index/_doc/1 ein

"Kategorie": "Electronic_Purchases",
"Kunden": [

"First_Name": "Barbra",
"Last_name": "Walker"
,

"First_Name": "Michael",
"Last_name": "Jean"
,

"First_Name": "Hannah",
"Last_name": "Newsome"

]

Um eine verschachtelte Anfrage auszuführen, können wir ein Beispiel wie das unten gezeigte Beispiel ausführen:

Holen Sie sich verschachtelt-Index/_Search

"Anfrage":
"verschachtelt":
"Pfad": "Kunden",
"Anfrage":
"bool":
"muss": [
"passen":
"Kunden.First_Name ":" Hannah "


]

,
"Inner_hits": "Highlight": "Fields": "Kunden.Vorname":


Eine Beispielantwort aus der obigen Abfrage ist unten:

Die verschachtelte Abfrage verwendet Parameter als:

  1. Weg - Der Pfadparameter definiert den Pfad zum verschachtelten Objekt, unter dem die Suchabfrage durchgeführt werden kann. Dieser Parameter ist erforderlich.
  2. Anfrage - Dieser Parameter definiert die Suchabfrage, die auf dem bereitgestellten verschachtelten Pfad ausgeführt werden soll. Ähnlich wie der Pfadparameter ist der Abfrageparameter nicht optional.
  3. Bool - Die Boolesche Abfrage stellt sicher, dass die Dokumente mit der angegebenen Bedingung übereinstimmen. Wenn Sie die Boolesche Abfrage festlegen, muss die festgelegte Klausel im Matching -Datensatz befinden. Betrachten Sie die Dokumentation der Booleschen Anfrage, um mehr zu erfahren.
  4. Inner_hits - Dies kehrt pro Such -Treffer in der Antwort der verschachtelten Antwort zurück. Es akzeptiert Optionen wie Highlight, gefolgt vom Feld zum Hervorhebung.

Multi-Level-verschachtelte Fragen

Sie können auch mehrstufige verschachtelte Abfragen haben, wie im Beispielindex gezeigt:

Put /Benutzer

"Mappings":
"Eigenschaften":
"Nutzername":
"Typ": "verschachtelt",
"Eigenschaften":
"Vorname":
"Text eingeben"
,
"Email":
"Typ": "verschachtelt",
"Eigenschaften":
"Anbieter":
"Text eingeben"
,
"Präfix":
"Text eingeben"







Fügen Sie ein paar Dokumente mit den Daten als:

Put/Benutzer/_doc/1

"Nutzername":
"First_Name": "David",
"Email": [

"Anbieter": "Google Mail.com ",
"Präfix": "David123@"
,

"Anbieter": "Hotmail.com ",
"Präfix": "Davidy123@"

]


Put/user/_doc/2

"Nutzername":
"First_Name": "Lucy",
"Email": [

"Anbieter": "Outlook.com ",
"Präfix": "LucyMail@"
,

"Anbieter": "Protonmail.com ",
"Präfix": "lucyp@"

]

Führen Sie die Anfrage als:

Get /Benutzer /_search

"Anfrage":
"verschachtelt":
"Pfad": "Benutzername",
"Anfrage":
"verschachtelt":
"Pfad": "Benutzername.Email",
"Anfrage":
"bool":
"muss": [
"passen":
"Nutzername.Email.Anbieter ":" Google Mail.com "

]






Ein Beispiel für die Antwort aus der resultierenden Abfrage ist unten:

Abschließend

In diesem Leitfaden wird erörtert.