社区日报 第690期 (2019-08-04)
社区日报 • 至尊宝 发表了文章 • 0 个评论 • 1002 次浏览 • 2019-08-04 10:19
http://t.cn/AiYY4BuE
2.使用Spring Boot微服务设置ELK堆栈。
http://t.cn/AiYYGkuf
3.(自备梯子)如何阻止电子邮件对你进行间谍活动。
http://t.cn/AiYY6jAr
编辑:至尊宝
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
elasticsearch配置文件里两项解释
Elasticsearch • God_lockin 回复了问题 • 4 人关注 • 2 个回复 • 10214 次浏览 • 2019-08-03 22:32
社区日报 第689期 (2019-08-03)
社区日报 • bsll 发表了文章 • 0 个评论 • 1105 次浏览 • 2019-08-03 18:51
1.es集群测试工具rally
[http://t.cn/AiY0eoBa](http://t.cn/AiY0eoBa)
2.使用function_score的一些实例(需翻墙)
[http://t.cn/RQ45Wva](http://t.cn/RQ45Wva)
3.一周热点:《哪吒》刷爆朋友圈
[http://t.cn/AiY0rKja](http://t.cn/AiY0rKja)
elasticsearch同时对多个字段聚合(两个字段值类型一致)
Elasticsearch • God_lockin 回复了问题 • 3 人关注 • 1 个回复 • 3753 次浏览 • 2019-08-03 18:20
社区日报 第688期 (2019-08-02)
社区日报 • laoyang360 发表了文章 • 0 个评论 • 1210 次浏览 • 2019-08-02 22:28
https://tinyurl.com/yynpe4ly
2、NMap数据ELK实战分析
https://tinyurl.com/y2em42b2
3、开源:Elasticsearch股票预测
https://tinyurl.com/y5egx5mr
编辑:铭毅天下
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
elasticsearch是否能进行众数聚合
Elasticsearch • fantuan 回复了问题 • 3 人关注 • 2 个回复 • 1588 次浏览 • 2019-08-02 16:46
用date_histogram为什么key_as_string是这样的
Elasticsearch • stephen_qu 回复了问题 • 6 人关注 • 5 个回复 • 3240 次浏览 • 2019-08-02 16:13
filebeat mysql module解析Mysql slow不匹配,请问数据库那边要怎么设置?
回复Beats • Goun 发起了问题 • 1 人关注 • 0 个回复 • 2177 次浏览 • 2019-08-02 11:08
es path.data配置多个路径,存储的机制是什么,版本是2.4
回复Elasticsearch • lvwendong 发起了问题 • 1 人关注 • 0 个回复 • 1420 次浏览 • 2019-08-02 09:03
如何手动触发translog的comit操作?
Elasticsearch • zqc0512 回复了问题 • 3 人关注 • 1 个回复 • 1723 次浏览 • 2019-08-02 08:53
快照一直在IN_PROGRESS状态且无法删除
回复Elasticsearch • wangxinrong 发起了问题 • 1 人关注 • 0 个回复 • 2518 次浏览 • 2019-08-01 20:22
记一次“访问量超过1000的人数”统计,计算聚合桶的个数
Elasticsearch • ziyou 发表了文章 • 2 个评论 • 7701 次浏览 • 2019-08-01 18:45
前言
众所周知,在ES中有各种聚合方法能够是数据分析简单、高效。但是在繁杂的聚合方法中找到满足我们需求的那个,需要我们自己去实践。下面我就说明一下“访问量超过1000的人数”统计案例的实现。
需求
ES在使用过程中,我们公司有一个需求,就是需要统计活跃用户数,我们定义活跃用户数为:今日访问量超过1000的用户,所以我们统计活跃用户数的时候需要统计“访问量超过1000的人数”。
之前的做法
第一版统计活跃用户数的方法由于对复杂的聚合统计不熟悉的原因,就把统计分为了两步。
第一步:在ES中使用字段聚合每个用户的访问数量,数量大于1000;
查询语句
json<br /> {<br /> "aggs": {<br /> "user": {<br /> "terms": {<br /> "field": "userId.keyword",<br /> "size": 10000,<br /> "order": {<br /> "_count": "desc"<br /> },<br /> "min_doc_count": "1000"<br /> }<br /> }<br /> },<br /> "size": 0,<br /> "query": {<br /> "bool": {<br /> "must": [<br /> {<br /> "range": {<br /> "startTime": {<br /> "gte": "now-4h",<br /> "lte": "now",<br /> "format": "epoch_millis"<br /> }<br /> }<br /> }<br /> ]<br /> }<br /> }<br /> }<br />
查询结果
json<br /> {<br /> "took" : 203,<br /> "timed_out" : false,<br /> "_shards" : {<br /> "total" : 1565,<br /> "successful" : 1565,<br /> "skipped" : 1520,<br /> "failed" : 0<br /> },<br /> "hits" : {<br /> "total" : 67470,<br /> "max_score" : 0.0,<br /> "hits" : [ ]<br /> },<br /> "aggregations" : {<br /> "user" : {<br /> "doc_count_error_upper_bound" : 0,<br /> "sum_other_doc_count" : 0,<br /> "buckets" : [<br /> {<br /> "key" : "admin",<br /> "doc_count" : 46998<br /> },<br /> {<br /> "key" : "nameless",<br /> "doc_count" : 8416<br /> },<br /> {<br /> "key" : "li",<br /> "doc_count" : 2486<br /> },<br /> {<br /> "key" : "liu",<br /> "doc_count" : 2183<br /> },<br /> {<br /> "key" : "111111",<br /> "doc_count" : 1281<br /> }<br /> ]<br /> }<br /> }<br /> }<br />
第二步:从ES中获取第一步的统计结果,然后统计用户桶的个数,达到统计出个数的效果。
改进后的做法
改进后就是直接使用ES的查询,使用了sum_bucket聚合,是计算每个用户的用户ID独立数,也就是每个用户的用户ID独立数都是1,然后用桶聚合求和,得到所有的人数。
参考链接:[sum bucket聚合](<a href="https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-aggregations-pipeline-sum-bucket-aggregation.html</a>" rel="nofollow" target="_blank">https://www.elastic.co/guide/e ... %26gt;)
查询语句
json<br /> {<br /> "aggs": {<br /> "usercount": {<br /> "sum_bucket": {<br /> "buckets_path": "usercount-bucket>usercount-metric"<br /> }<br /> },<br /> "usercount-bucket": {<br /> "terms": {<br /> "field": "userId.keyword",<br /> "size": 10,<br /> "order": {<br /> "_key": "desc"<br /> },<br /> "min_doc_count": "1000"<br /> },<br /> "aggs": {<br /> "usercount-metric": {<br /> "cardinality": {<br /> "field": "userId.keyword"<br /> }<br /> }<br /> }<br /> }<br /> },<br /> "size": 0,<br /> "query": {<br /> "bool": {<br /> "must": [<br /> {<br /> "range": {<br /> "x_st": {<br /> "gte": "now-4h",<br /> "lte": "now",<br /> "format": "epoch_millis"<br /> }<br /> }<br /> }<br /> ]<br /> }<br /> }<br /> }<br />
查询结果
json<br /> {<br /> "took" : 106,<br /> "timed_out" : false,<br /> "_shards" : {<br /> "total" : 1565,<br /> "successful" : 1565,<br /> "skipped" : 1520,<br /> "failed" : 0<br /> },<br /> "hits" : {<br /> "total" : 63956,<br /> "max_score" : 0.0,<br /> "hits" : [ ]<br /> },<br /> "aggregations" : {<br /> "usercount-bucket" : {<br /> "doc_count_error_upper_bound" : 0,<br /> "sum_other_doc_count" : 0,<br /> "buckets" : [<br /> {<br /> "key" : "nameless",<br /> "doc_count" : 8278,<br /> "usercount-metric" : {<br /> "value" : 1<br /> }<br /> },<br /> {<br /> "key" : "liu",<br /> "doc_count" : 2142,<br /> "usercount-metric" : {<br /> "value" : 1<br /> }<br /> },<br /> {<br /> "key" : "li",<br /> "doc_count" : 1928,<br /> "usercount-metric" : {<br /> "value" : 1<br /> }<br /> },<br /> {<br /> "key" : "admin",<br /> "doc_count" : 44395,<br /> "usercount-metric" : {<br /> "value" : 1<br /> }<br /> },<br /> {<br /> "key" : "111111",<br /> "doc_count" : 1281,<br /> "usercount-metric" : {<br /> "value" : 1<br /> }<br /> }<br /> ]<br /> },<br /> "usercount" : {<br /> "value" : 5.0<br /> }<br /> }<br /> }<br />
如果目前索引已存在,如何增加分片数量?
Elasticsearch • Joshua 回复了问题 • 7 人关注 • 4 个回复 • 15092 次浏览 • 2019-08-01 16:34