簡體   English   中英

如何在Elasticsearch中按字段匯總數據?

[英]How to aggregate data by an field in elasticsearch?

我正在使用kibana 4.4.1,並且在Elasticsearch中,僅當PC狀態更改(打開,關閉,警告等)時,我才存儲PC的狀態

我進入Elasticsearch的數據如下:

{ "status_id":1 , "pc":"lpt001" , "date":"2016-10-25T17:49:00Z" }
{ "status_id":3 , "pc":"lpt001" , "date":"2016-10-25T15:48:00Z" }
{ "status_id":4 , "pc":"lpt002" , "date":"2016-10-25T15:46:00Z" }
{ "status_id":1 , "pc":"lpt002" , "date":"2016-10-25T12:48:00Z" }

我要獲得最新記錄,以便隨時擁有打開,關閉或有問題的PC數量。 我的查詢就像:

GET cb-2016.10.26/_search
{
  "query": {
    "match_all": { }
  },
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    }
  ], 
  "aggs": {
    "max_date":{
      "max": {
        "field": "date"
      }
    }
  }
}

結果是:

"aggregations": {
    "max_date": {
      "value": 1477417680000,
      "value_as_string": "2016-10-25T17:48:00.000Z"
    }
  }

但是我想要的是每個“ pc”的max_date:“ lpt001”,“ lpt002”。

有什么方法可以通過“ pc”字段分割max_date? 我閱讀了一些有關存儲桶聚合的信息,但未達到結果。

謝謝

是的,您可以使用pc字段的terms聚合來做到這一點,然后將max_date移至terms one的子聚合:

POST cb-2016.10.26/_search
{
  "query": {
    "match_all": { }
  },
  "sort": [
    {
      "date": {
        "order": "desc"
      }
    }
  ], 
  "aggs": {
    "pcs": {
      "terms": {
        "field": "pc"
      },
      "aggs": {
        "max_date":{
          "max": {
            "field": "date"
          }
        }
      }
    }
  }
}

最終查詢如下:

{
  "query": {
    "match_all": { }
  },
  "aggs" : {
        "pcstatus" : {
            "terms" : {
                "field" : "pc"
            },
            "aggs": {
                "top_date_hit": {
                    "top_hits": {
                        "sort": [
                            {
                                "date": {
                                    "order": "desc"
                                }
                            }
                        ],
                        "size" : 1
                    }
                }
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM