ES聚合&去重查询

2019-10-11  本文已影响0人  老季的私密空间

ES聚合指标

value_count:  计数
cardinality: 去重计数
avg:  平均值
sum: 求和
max: 最大值
min: 最小值
percentiles: 百分比
top_hits: 简单来说就是聚合分组后从每一个组取部分数据作为结果返回


1, 基础数据 用户登陆信息 包含登陆时间、用户ID等信息
查询某个时间段内uv DSL如下:
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "time": {
              "gte": "2019-09-02 00:00:00",
              "lt": "2019-09-09 00:00:00",
              "format": "yyyy-MM-dd HH:mm:ss",
              "time_zone": "+08:00"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "userCount": {
      "cardinality": {
        "field": "userId.keyword"
      }
    }
  }
}
查询某段时间内每天的uv
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "time": {
              "gte": "2019-09-02 00:00:00",
              "lt": "2019-09-09 00:00:00",
              "format": "yyyy-MM-dd HH:mm:ss",
              "time_zone": "+08:00"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "groupBy": {
      "date_histogram": {
        "field": "time",
        "interval": "day"  //按天 比如按照7天: 7d, 按照月: month等
      },
      "aggs": {
        "userCount": {
          "cardinality": {
            "field": "userId.keyword"
          }
        }
      }
    }
  }
}
2, 基础数据 用户访问商品页信息 包含访问时间、访问商品ID、用户ID等信息
统计一个时间范围内 商品访问uv/pv排行
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "time": {
              "gte": "2019-07-01 00:00:00",
              "lt": "2019-09-10 00:00:00",
              "format": "yyyy-MM-dd HH:mm:ss",
              "time_zone": "+08:00"
            }
          }
        },
        {
          "terms": {
            "spuId": [
              "224441"  //特定spu
            ]
          }
        }
      ],
      "must_not": {
        "match": {
          "userId.keyword": ""
        }
      }
    }
  },
  "aggs": {
    "groupBy": {
      "terms": {
        "field": "spuId.keyword",
        "order": {
          "uv": "desc"   //按uv排序,此处也可以修改为按pv排序
        }
      },
      "aggs": {
        "uv": {
          "cardinality": { //uv  userId去重后计数
            "field": "userId.keyword"
          }
        },
        "pv": {
          "value_count": {   //pv  userId计数
            "field": "userId.keyword"
          }
        }
      }
    }
  }
}
上一篇下一篇

猜你喜欢

热点阅读