Aggregationen für innere Treffer

9

Ich habe ein Eltern-Kind-Mapping in ElasticSearch:

übergeordnet: Benutzer

Kinder: Privilegien

Für Privilegien gibt es einige Eigenschaften, und eine davon ist " privileg Name ".

Die Abfrage gibt Benutzer mit bestimmten Berechtigungen zurück, aber ich möchte den aggregierten privilegiertenName für jeden Benutzer für die Berechtigungen zurückgeben, die der Abfrage has_child entsprechen. Ich kann alle Privilegien mit inner_hits zurückgeben und sie auf der Client-Seite verarbeiten, aber das kann mühsam sein. Gibt es eine Möglichkeit, die inner_hits zu aggregieren?

Danke

    
Adrian Ivan 23.08.2015, 19:30
quelle

1 Antwort

1

Ich glaube, was Sie suchen, ist die Kinderaggregation .

Nehmen wir beispielsweise an, ich erstelle den folgenden Index mit dem Benutzer als übergeordnetes Element und Berechtigung als untergeordnetes Element:

%Vor%

Dann füge ich die folgenden Benutzer hinzu:

%Vor%

Dann gebe ich jedem Benutzer einige Privilegien. Nehmen wir an, ich gebe Sally das Privileg, 'hinzufügen', 'aktualisieren' und 'löschen':

%Vor%

Aber ich gebe Bob nur das Privileg "hinzufügen" und "aktualisieren":

%Vor%

Ich kann jetzt mit der Abfrage has_child nach allen Benutzern suchen, die die Berechtigung zum Hinzufügen haben. Aber in aggs kann ich auch eine vollständige Liste aller Privilegien anzeigen, die jeder der übereinstimmenden Benutzer hat:

%Vor%     
BrookeB 15.01.2016 21:09
quelle

Tags und Links