• 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

  • 相关阅读:
    CSP-S2-2019游记
    【BZOJ2301】【HAOI2011】Problem B
    【NOIp2017】宝藏
    【NOIp2016】天天爱跑步
    【NOIp2018】保卫王国
    【BZOJ2159】Crash的文明世界
    Van爆零赛总结
    【ZJOI2016】小星星
    【CF1025D】Recovering BST
    【HAOI2016】字符合并
  • 原文地址:https://www.cnblogs.com/naocanzhishen/p/8177603.html
Copyright © 2020-2023  润新知