Ich verwende NEST 2.3.2. Und ich versuche, eine Abfrage mit verschachtelten Aggregationen zu erstellen. Grundsätzlich habe ich einen Index mit Protokollen, die einen Zeitstempel und einen Ergebniscode haben. Ich möchte diese Protokolle zuerst in Minuteneinheiten speichern und sie dann entsprechend dem Ergebniscode klassifizieren.Elasticsearch NEST-Client mit verschachtelten Aggregationen
Ich habe den folgenden F # Code zum Generieren der Abfrage.
/// Generate an aggregation to put buckets by result code
let generateAggregationByResultCode() =
let resultAggregationName = "result_aggregation"
let aggregationByResults = new TermsAggregation(resultAggregationName)
aggregationByResults.Field <- new Field(Name = "Result")
aggregationByResults.ExecutionHint <- new Nullable<TermsAggregationExecutionHint>(TermsAggregationExecutionHint.GlobalOrdinals);
aggregationByResults.MinimumDocumentCount <- new Nullable<int>(0);
aggregationByResults.Size <- new Nullable<int>(bucketSize);
aggregationByResults.Missing <- "-128"
aggregationByResults
/// Generate an aggregation to classify into buckets by minutes and then by result code
let generateNewDateHistogramByMinute() =
let dateHistogramByMinute = new DateHistogramAggregation("by_minute")
dateHistogramByMinute.Field <- new Field(Name = "OperationTime")
dateHistogramByMinute.Interval <- new Union<DateInterval, Time>(DateInterval.Minute) // can also use TimeSpan.FromMinutes(1.0)
dateHistogramByMinute.MinimumDocumentCount <- new Nullable<int>(0)
dateHistogramByMinute.Format <- "strict_date_hour_minute"
let innerAggregations = new AggregationDictionary()
innerAggregations.[resultInnerAggregationName] <- new AggregationContainer(Terms = generateAggregationByResultCode())
dateHistogramByMinute.Aggregations <- innerAggregations
dateHistogramByMinute
ich diese Aggregation verwenden, um die Anfrage von
let dateHistogram = generateNewDateHistogramByMinute()
let aggregations = new AggregationDictionary()
aggregations.[histogramName] <- new AggregationContainer(DateHistogram = dateHistogram)
(* ... code omitted ... *)
dslRequest.Aggregations <- aggregations
einstellen Wenn ich den Antrag ausdrucken, ist die Aggregation Teil wie dies
"aggs": {
"BucketsByMinutes": {
"date_histogram": {
"field": "OperationTime",
"interval": "minute",
"format": "strict_date_hour_minute",
"min_doc_count": 0
}
}
}
Die innere Aggregation vollständig verloren geht. Weiß jemand wie ich eine Anfrage richtig aufbauen soll? Und wie kann ich diese inneren Buckets abrufen, wenn die Antwort zurückgegeben wird? Ich habe dafür keine geeigneten Eigenschaften oder Methoden gefunden, und die Dokumentation ist im Grunde genommen nicht existent.
Haben Sie die 2.x-Dokumentation unter https://www.elastic.co/guide/en/elasticsearch/client/net-api/2.x/index.html gesehen? –
@RussCam Ich bin während meiner Suche nach Lösungen darauf gestoßen, aber es hat nicht viel geholfen. Danke für den Link. – LLS