/ / Restituisci il campo dal primo e dall'ultimo documento in Elasticsearch aggregation - elasticsearch

Restituisci il campo dal primo e dall'ultimo documento in Elasticsearch aggregation - elasticsearch

Ho una aggregazione di istogrammi elasticsearch che funziona bene così com'è.

Devo restituire un campo dal primo e dall'ultimo documento di ciascun bucket di aggregazione.

Query corrente (sintassi stile rubino):

{
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" } },
}
}
}
}

Ho cercato attraverso la documentazione egoogled estesamente ma non riesco a trovare alcuna soluzione Attualmente devo inviare una seconda query al database per recuperare esplicitamente tutti i valori per questo campo, ma vorrei inserire questa funzionalità nella mia query elasticsearch.

risposte:

6 per risposta № 1

Vuoi restituire un risultato per aggregazione, giusto?

Questo si chiama Field Collapsing e sfortunatamente non è ancora disponibile in Elasticsearch, vedi: https://github.com/elasticsearch/elasticsearch/issues/256

Aggiornamento settembre 2014

Come da @bpierce nei commenti qui sotto: Ora quello Elasticsearch 1.3.x è fuori campo, il collasso dei campi è disponibile tramite l'aggregazione top_hits. Lo sto attualmente usando in una query simile a questa.