Vermeiden des objektübergreifenden Suchverhaltens bei geschachtelten Typen in der elastischen Suche
Ich versuche herauszufinden, wie ein Dokument in der elastischen Suche am besten indiziert werden kann. Ich habe ein Dokument, Doc, das einige Felder enthält:
Doc
created_at
updated_at
field_a
field_b
Doc wird jedoch auch einige benutzerspezifische Felder haben. Zum Beispiel hat field_x den Wert 'A' für Benutzer 1 und field_x den Wert 'B' für Benutzer 2. Für jedes Dokument gibt es eine sehr begrenzte Anzahl von Benutzern (normalerweise 2, bis zu ~ 10). Wenn ein Benutzer nach field_x sucht, muss er nach dem Wert suchen, der zu ihm gehört. Ich habe verschachtelte Typen in ES untersucht.
Doc
created_at
updated_at
field_x: [{
user: 1
field_x: A
},{
user: 2
field_x: B
}]
Wenn Benutzer 1 in Feld_x nach dem Wert 'A' sucht, sollte dieses Dokument zu einem Treffer führen. Dies sollte jedoch nicht der Fall sein, wenn Benutzer 1 nach dem Wert 'B' sucht.
Jedoch,laut den docs:
Eines der Probleme bei der Indizierung innerer Objekte, die mehrmals in einem Dokument auftreten, besteht darin, dass bei der Suche nach "objektübergreifenden" Objekten Übereinstimmungen auftreten
Gibt es eine Möglichkeit, dieses Verhalten bei verschachtelten Typen zu vermeiden, oder sollte ich einen anderen Typ untersuchen?
Zusätzliche Informationen zur Ausführung solcher Abfragen wären sehr wertvoll. Bereits beim Lesen der Dokumentation wurde festgestellt, dass verschachtelte Abfragen sich in Bezug auf die Leistung nicht zu stark von regulären Abfragen unterscheiden. Wenn jemand dies wirklich erlebt, würde ich es gerne hören.