Elasticsearch 聚合字段后 獲取聚合字段的單條詳細信息


最近工作中遇到一個需求 需要統計一段時間內 用戶某個特定操作的次數,然后還要顯示出用戶昵稱。

開始覺得很簡單,想着聚合一下用戶ID 結果就出來了,

{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "operatetype": "ceshi"
          }
        },
        {
          "term": {
            "ceshiHit": 1
          }
        },
        {
          "range": {
            "unixtime": {
              "gte": 1514822400000,
              "lte": 1514905200000
            }
          }
        },
        {
          "range": {
            "ceshiRate": {
              "gte": 1000
            }
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 0,
  "sort": [
    {
      "unixtime": "desc"
    }
  ],
  "aggs": {
    "usergroup": {
      "terms": {
        "field": "uid",
        "size": 0
      },
      "aggs": {
        "points": {
          "sum": {
            "field": "ceshiRate"
          }
        }
      }
    }
  }
}

聚合出來后 想要聚合字段對應的一條詳細信息,來獲取用戶的昵稱之類的固定信息,調查了一番也沒找到解決方案。

無奈只好知乎走一走。再次記錄一下解決方案。

在聚合中加入

"aggs": {
        "userdetail": {
          "top_hits": {
            "size": 1
          }
        }
      }

使用top_hits即可獲取需要的信息。

Elasticsearch 文檔鏈接

https://www.elastic.co/blog/top-hits-aggregation


免責聲明!

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



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