We want to extract the first time an occurrence happened.
For now, we use a scripted metric, which works fine:
"creation": {
"scripted_metric": {
"init_script": "state.timestamps = []",
"map_script": "if (doc.action.value == 'create') { state.timestamps.add(doc.timestamp.value.getMillis()) }",
"combine_script": "return state.timestamps.length > 0 ? Collections.min(state.timestamps) : -1L",
"reduce_script": "long first = 0; for (a in states) { if(!(a == -1L) && (a < first || first == 0)) { first = a } } return first"
}
}
But it looks like it would be nicer, and perform better, to combine min and filter agg, such as:
"creation": {
"filter": { "term": { "action": "create" } },
"aggs":{ "minValue": {"min": { "field": "timestamp" } }}
}
However, I cannot seem to get it to work, I tried multiple combinations. Is it even possible?