Elasticsearch - агрегирование максимального значения из вложенного документа

У меня есть тип документа, который имеет вложенное свойство, которое отслеживает определенные события, связанные с этим документом. event_type свойство вложенного doc_event Документ является последовательным, поэтому чем выше целочисленное значение, тем дальше в последовательности событий находится документ. Я хочу создать агрегацию, которая будет разбивать каждый my_doc по максимуму event_type значение, которое встречается между двумя датами.

{
  "mappings": {
    "my_doc": {
      "properties": {
        "doc_events": {
          "type": "nested",
          "properties": {
            "event_type": { "type": "integer" },
            "event_date": { "type": "date" }
          }
        }
      }
    }
  }
}

Я пробовал варианты следующей агрегации, и она все еще не дает правильных результатов.

{
    "size": 0,
    "aggregations": {
        "my_doc_events": {
            "nested": {
                "path": "doc_events"
            },
            "aggs": {
                "event_types": {
                    "terms": { "field": "doc_events.event_types" },
                    "aggs": {
                        "date_range": {
                            "filter": {
                                "range": {
                                    "doc_events.event_date": {
                                        "gte": "2017-12-25"
                                    }
                                }
                            },
                            "aggs": {
                                "my_docs": {
                                    "reverse_nested": {},
                                    "aggs": {
                                        "latest_event": {
                                            "top_hits": {
                                                "sort": [{ "doc_events.event_type": "desc" }],
                                                "size": 1
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

Как я могу достичь этой агрегации или это не совсем возможно?

0 ответов

Другие вопросы по тегам