elasticsearch 進行聚合+去重查詢


以客戶customer為例
我想查詢每日的客戶數。
先按照日期分桶,然后在桶內按照 姓名來去重 來計算客戶數(實際會按照客戶id 來區分客戶)
測試數據見 文章末尾
一共是9條數據, 名字分別為:
river Lucy 1 Lucy frank tom lily lily tom tom
不同的名字是 6 個。
 

先看看 es 的 query 怎么寫

{
  "size" : 0,
  "aggs" : {
      "days" : {
        "date_histogram": {
          "field": "createTime",
          "interval": "day"
        },
        "aggs": {
          "distinct_name" : {
              "cardinality" : {
                "field" : "firstName"
              }
          }
        }
      }
  }
}

查詢結果為:

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 2,
    "successful": 2,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": 9,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "days": {
      "buckets": [
        {
          "key_as_string": "2019-04-10 00:00:00",
          "key": 1554854400000,
          "doc_count": 9,
          "distinct_name": {
            "value": 6
          }
        }
      ]
    }
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM