Elasticsearch查询以按汇总过滤计数

时间:2018-09-03 12:55:17

标签: elasticsearch kibana

我正在编写一个查询来对文档进行计数,并按ModifyDateTime分组。该查询如下正常工作

{
    "aggs" : {
        "types_count" : { 
          "value_count" : { "field" : "id" }
        },
        "group_by_status": {
          "terms": {
            "field": "status.keyword"
          }
        }
    }
}

此查询为我提供了以下适当的存储桶

"buckets": [
        {
          "key": "STARTED",
          "doc_count": 579873
        },
        {
          "key": "SENT",
          "doc_count": 363026
        },

现在我们的流程是这样的,一旦它的触发状态为STARTED,其下一个SEND,然后其AWATING_RESPONSE,然后进入COMPLETED,并且每次过程移至下一个状态时,其版本都会递增。

因此,基本上在上述查询中,我正在计数处于不同状态的所有进程,但是窍门是,STARTED进程也被计入SENT,因为它与不同版本的进程相同。

现在我要如何创建查询是要为我提供所有不同陈述的计数,但它应该仅考虑最新版本,而不是所有版本。

我尝试了以下类似的方法

{
    "aggs" : {
        "types_count" : { 
          "value_count" : { "field" : "id" }
        },
        "aggs" : {
          "max_version" : { "max" : { "field" : "version" } }
        },
        "group_by_status": {
          "terms": {
            "field": "status.keyword"
          }
        }
    }
}

但是它给了我这个错误

"root_cause": [
      {
        "type": "named_object_not_found_exception",
        "reason": "[7:27] unable to parse BaseAggregationBuilder with name [max_version]: parser not found"
      }
    ]

任何方法都可以实现吗?

0 个答案:

没有答案