Ich habe Probleme mit verschachtelten Aggregationen. Hier ist, wie ich meine Aggregationen definieren und die json Äquivalent ich:Verschachtelte Aggregation funktioniert nicht mit AggregationContainer
var aggregations = new AggregationDictionary();
var nestedAgg = new AggregationContainer
{
Nested = new NestedAggregation("some_name1")
{
Path = "users",
Aggregations = new TermsAggregation("some_name2")
{
Field = "users.name.keyword",
Size = 100,
Order = new List<TermsOrder> { new TermsOrder() { Key = "_term", Order = SortOrder.Descending } }
}
};
aggregations[aggKey] = nestedAgg;
searchRequest.Aggregations = aggregations;
Die oben an folgende json übersetzt. es zeigt nur den Pfad und keine Aggregationen Definition:
{
"aggs": {
"some_name1": {
"nested": {
"path": "users"
}
}
}
warum wird mit 'AggregationDictionary' und' AggregationContainer' direkt umständlich? Wie füge ich mehrere Aggregationen zu meinem 'SearchRequest' hinzu? –
Die Verwendung von direkt ist ein wenig _awkward_ aus ein paar Gründen :) Jeder Aggregationstyp hat einen Konstruktor, der einen Namen (wie es erforderlich ist) nimmt, aber mit 'AggregationDictionary' wird der Name des Schlüssels der Name für die Aggregation verwendet. Wenn Sie 'AggregationContainer' direkt verwenden, müssen Sie sicherstellen, dass Sie beim Zuweisen einer Aggregation auch die Eigenschaften 'Aggregations' und' Meta' entsprechend der Antwort festlegen. Um es einfacher zu machen, gibt es implizite Konvertierungen von 'AggregationBase' in' AggregationContainer' und 'AggregationDictionary'. –
Sie können Aggregationen mit '&&' kombinieren: https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/writing-aggregations.html –