/ / Feld vom ersten und letzten Dokument in Elasticsearch aggregation zurückgeben - elasticsearch

Gibt das Feld aus dem ersten und letzten Dokument in Elasticsearch aggregation - elasticsearch zurück

Ich habe eine sortierte Elasticsearch-Histogramm-Aggregation, die so funktioniert wie sie ist.

Ich muss ein Feld aus dem ersten und letzten Dokument jedes Aggregations-Buckets zurückgeben.

Aktuelle Abfrage (Ruby-artige Syntax):

{
query: {
filtered: {
filter: {
bool: {
must: [
{ term: { some_id: "something" } },
{ range: {
completed_at: {
gte: start,
lte: end
}
}
}
]
}
},
_cache: true,
_cache_key: "special-query"
}
},
aggs: {
intervals: {
histogram: {
field: "completed_at",
interval: 24.hours.to_i,
min_doc_count: 0,
order: { _key: "asc" }
},
aggs: {
start_at: { min: { field: "completed_at" } },
end_at: { max: { field: "completed_at" } },
price_stats: { extended_stats: { field: "rate" } },
}
}
}
}

Ich habe die Dokumentation durchsucht undgoogelt ausgiebig, kann aber keine Lösungen finden. Zur Zeit muss ich eine zweite Abfrage an die Datenbank senden, um explizit alle Werte für dieses Feld abzurufen, aber ich möchte diese Funktionalität in meine elasticsearch-Abfrage einfügen.

Antworten:

6 für die Antwort № 1

Sie möchten ein Ergebnis pro Aggregationsrecht zurückgeben?

Das nennt man Field Collapsing und ist leider noch nicht in Elasticsearch verfügbar, siehe: https://github.com/elasticsearch/elasticsearch/issues/256

Update September 2014

Wie @Bpierce in den Kommentaren unten: Jetzt, dass Elasticsearch 1.3.x ist out, field collapsing ist über die top_hits-Aggregation verfügbar. Ich verwende es derzeit in einer ähnlichen Abfrage.