即使是不成熟的尝试,也胜于胎死腹中的策略。

社区日报 第689期 (2019-08-03)

1.es集群测试工具rally http://t.cn/AiY0eoBa

2.使用function_score的一些实例(需翻墙) http://t.cn/RQ45Wva

3.一周热点:《哪吒》刷爆朋友圈 http://t.cn/AiY0rKja

继续阅读 »

1.es集群测试工具rally http://t.cn/AiY0eoBa

2.使用function_score的一些实例(需翻墙) http://t.cn/RQ45Wva

3.一周热点:《哪吒》刷爆朋友圈 http://t.cn/AiY0rKja

收起阅读 »

社区日报 第688期 (2019-08-02)

1、Elastic Stack 7.3.0 重磅发布
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
继续阅读 »
1、Elastic Stack 7.3.0 重磅发布
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 收起阅读 »

记一次“访问量超过1000的人数”统计,计算聚合桶的个数

前言

众所周知,在ES中有各种聚合方法能够是数据分析简单、高效。但是在繁杂的聚合方法中找到满足我们需求的那个,需要我们自己去实践。下面我就说明一下“访问量超过1000的人数”统计案例的实现。

需求

ES在使用过程中,我们公司有一个需求,就是需要统计活跃用户数,我们定义活跃用户数为:今日访问量超过1000的用户,所以我们统计活跃用户数的时候需要统计“访问量超过1000的人数”。

之前的做法

第一版统计活跃用户数的方法由于对复杂的聚合统计不熟悉的原因,就把统计分为了两步。 第一步:在ES中使用字段聚合每个用户的访问数量,数量大于1000;

查询语句

{
  "aggs": {
    "user": {
      "terms": {
        "field": "userId.keyword",
        "size": 10000,
        "order": {
          "_count": "desc"
        },
        "min_doc_count": "1000"
      }
    }
  },
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "startTime": {
              "gte": "now-4h",
              "lte": "now",
              "format": "epoch_millis"
            }
          }
        }
      ]
    }
  }
}

查询结果

{
  "took" : 203,
  "timed_out" : false,
  "_shards" : {
    "total" : 1565,
    "successful" : 1565,
    "skipped" : 1520,
    "failed" : 0
  },
  "hits" : {
    "total" : 67470,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "user" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "admin",
          "doc_count" : 46998
        },
        {
          "key" : "nameless",
          "doc_count" : 8416
        },
        {
          "key" : "li",
          "doc_count" : 2486
        },
        {
          "key" : "liu",
          "doc_count" : 2183
        },
        {
          "key" : "111111",
          "doc_count" : 1281
        }
      ]
    }
  }
}

第二步:从ES中获取第一步的统计结果,然后统计用户桶的个数,达到统计出个数的效果。

改进后的做法

改进后就是直接使用ES的查询,使用了sum_bucket聚合,是计算每个用户的用户ID独立数,也就是每个用户的用户ID独立数都是1,然后用桶聚合求和,得到所有的人数。 参考链接:[sum bucket聚合](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-aggregations-pipeline-sum-bucket-aggregation.html)

查询语句

{
  "aggs": {
    "usercount": {
      "sum_bucket": {
        "buckets_path": "usercount-bucket>usercount-metric"
      }
    },
    "usercount-bucket": {
      "terms": {
        "field": "userId.keyword",
        "size": 10,
        "order": {
          "_key": "desc"
        },
        "min_doc_count": "1000"
      },
      "aggs": {
        "usercount-metric": {
          "cardinality": {
            "field": "userId.keyword"
          }
        }
      }
    }
  },
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "x_st": {
              "gte": "now-4h",
              "lte": "now",
              "format": "epoch_millis"
            }
          }
        }
      ]
    }
  }
}

查询结果

{
  "took" : 106,
  "timed_out" : false,
  "_shards" : {
    "total" : 1565,
    "successful" : 1565,
    "skipped" : 1520,
    "failed" : 0
  },
  "hits" : {
    "total" : 63956,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "usercount-bucket" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "nameless",
          "doc_count" : 8278,
          "usercount-metric" : {
            "value" : 1
          }
        },
        {
          "key" : "liu",
          "doc_count" : 2142,
          "usercount-metric" : {
            "value" : 1
          }
        },
        {
          "key" : "li",
          "doc_count" : 1928,
          "usercount-metric" : {
            "value" : 1
          }
        },
        {
          "key" : "admin",
          "doc_count" : 44395,
          "usercount-metric" : {
            "value" : 1
          }
        },
        {
          "key" : "111111",
          "doc_count" : 1281,
          "usercount-metric" : {
            "value" : 1
          }
        }
      ]
    },
    "usercount" : {
      "value" : 5.0
    }
  }
}
继续阅读 »

前言

众所周知,在ES中有各种聚合方法能够是数据分析简单、高效。但是在繁杂的聚合方法中找到满足我们需求的那个,需要我们自己去实践。下面我就说明一下“访问量超过1000的人数”统计案例的实现。

需求

ES在使用过程中,我们公司有一个需求,就是需要统计活跃用户数,我们定义活跃用户数为:今日访问量超过1000的用户,所以我们统计活跃用户数的时候需要统计“访问量超过1000的人数”。

之前的做法

第一版统计活跃用户数的方法由于对复杂的聚合统计不熟悉的原因,就把统计分为了两步。 第一步:在ES中使用字段聚合每个用户的访问数量,数量大于1000;

查询语句

{
  "aggs": {
    "user": {
      "terms": {
        "field": "userId.keyword",
        "size": 10000,
        "order": {
          "_count": "desc"
        },
        "min_doc_count": "1000"
      }
    }
  },
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "startTime": {
              "gte": "now-4h",
              "lte": "now",
              "format": "epoch_millis"
            }
          }
        }
      ]
    }
  }
}

查询结果

{
  "took" : 203,
  "timed_out" : false,
  "_shards" : {
    "total" : 1565,
    "successful" : 1565,
    "skipped" : 1520,
    "failed" : 0
  },
  "hits" : {
    "total" : 67470,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "user" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "admin",
          "doc_count" : 46998
        },
        {
          "key" : "nameless",
          "doc_count" : 8416
        },
        {
          "key" : "li",
          "doc_count" : 2486
        },
        {
          "key" : "liu",
          "doc_count" : 2183
        },
        {
          "key" : "111111",
          "doc_count" : 1281
        }
      ]
    }
  }
}

第二步:从ES中获取第一步的统计结果,然后统计用户桶的个数,达到统计出个数的效果。

改进后的做法

改进后就是直接使用ES的查询,使用了sum_bucket聚合,是计算每个用户的用户ID独立数,也就是每个用户的用户ID独立数都是1,然后用桶聚合求和,得到所有的人数。 参考链接:[sum bucket聚合](https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-aggregations-pipeline-sum-bucket-aggregation.html)

查询语句

{
  "aggs": {
    "usercount": {
      "sum_bucket": {
        "buckets_path": "usercount-bucket>usercount-metric"
      }
    },
    "usercount-bucket": {
      "terms": {
        "field": "userId.keyword",
        "size": 10,
        "order": {
          "_key": "desc"
        },
        "min_doc_count": "1000"
      },
      "aggs": {
        "usercount-metric": {
          "cardinality": {
            "field": "userId.keyword"
          }
        }
      }
    }
  },
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "x_st": {
              "gte": "now-4h",
              "lte": "now",
              "format": "epoch_millis"
            }
          }
        }
      ]
    }
  }
}

查询结果

{
  "took" : 106,
  "timed_out" : false,
  "_shards" : {
    "total" : 1565,
    "successful" : 1565,
    "skipped" : 1520,
    "failed" : 0
  },
  "hits" : {
    "total" : 63956,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "usercount-bucket" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 0,
      "buckets" : [
        {
          "key" : "nameless",
          "doc_count" : 8278,
          "usercount-metric" : {
            "value" : 1
          }
        },
        {
          "key" : "liu",
          "doc_count" : 2142,
          "usercount-metric" : {
            "value" : 1
          }
        },
        {
          "key" : "li",
          "doc_count" : 1928,
          "usercount-metric" : {
            "value" : 1
          }
        },
        {
          "key" : "admin",
          "doc_count" : 44395,
          "usercount-metric" : {
            "value" : 1
          }
        },
        {
          "key" : "111111",
          "doc_count" : 1281,
          "usercount-metric" : {
            "value" : 1
          }
        }
      ]
    },
    "usercount" : {
      "value" : 5.0
    }
  }
}
收起阅读 »

社区日报 第687期 (2019-08-01)

1.使用canal有序同步MySQL数据到ES
http://t.cn/AiYA5DfC
2.深入分析Elastic Search的写入过程
http://t.cn/AiY7Z1uB
3.怎么解决Skywalking对应的ES的CPU高的问题
http://t.cn/AiYA5rNW

编辑:金桥
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.使用canal有序同步MySQL数据到ES
http://t.cn/AiYA5DfC
2.深入分析Elastic Search的写入过程
http://t.cn/AiY7Z1uB
3.怎么解决Skywalking对应的ES的CPU高的问题
http://t.cn/AiYA5rNW

编辑:金桥
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第686期 (2019-07-31)

1.倒排索引,正排索引与 Lucene
http://t.cn/AiYZgtrN
2.基于 MySQL Binlog 的 Elasticsearch 数据同步实践
http://t.cn/AilL7Q05
3.Elasticsearch 集群优化 之 海量时序数据处理
http://t.cn/AiYZe8bE
 
编辑:江水
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.倒排索引,正排索引与 Lucene
http://t.cn/AiYZgtrN
2.基于 MySQL Binlog 的 Elasticsearch 数据同步实践
http://t.cn/AilL7Q05
3.Elasticsearch 集群优化 之 海量时序数据处理
http://t.cn/AiYZe8bE
 
编辑:江水
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

ES6.8权限使用配置


概述
ES的权限控制一直ES使用中的一个问题,因为官方之前一直未免费安全性功能。公司要不选择使用其他插件来解决,要不就是只在内网使用。现在在ES6.8及以后版本ES将部分安全性功能免费开放了, 现在我们就6.8版本的【基于角色的访问控制】进行操作、验证。
1、下载安装ELK6.8版本(此处省略)
ES在6.8以后发布的版本才有(7.0是发布在6.8之前的)
2、修改ES配置文件 elasticsearch.yml
在配置文件中添加:
xpack.security.enabled: true
基础版本的安全性功能是默认关闭的。
然后启动ES
./elasticsearch -d
3、设置内置用户密码
参考:内置用户
./bin/elasticsearch-setup-passwords interactive
这里设置的密码要记住,后面会使用到。我们设置简单的密码:123456(密码不能少于6位)
如果是Windows请使用CMD命令行执行
按照提示设置内置用户密码
4、设置kibana用户名密码
在kibana的配置文件kibana.yml里面添加
elasticsearch.username: "kibana"
elasticsearch.password: "123456"
5、然后启动kibana
启动kibana就可以使用用户名与密码进行访问。

Image.png


6、设置logstash用户名和密码
打开配置文件conf,在output中的elasticsearch中添加user、password
例:
output {
elasticsearch {
hosts => ["10.68.24.136:9200","10.68.24.137:9200"]
index => "%{[indexName]}-%{+YYYY.MM.dd}"
user => "logstash_system"
password => "123456"
}
继续阅读 »

概述
ES的权限控制一直ES使用中的一个问题,因为官方之前一直未免费安全性功能。公司要不选择使用其他插件来解决,要不就是只在内网使用。现在在ES6.8及以后版本ES将部分安全性功能免费开放了, 现在我们就6.8版本的【基于角色的访问控制】进行操作、验证。
1、下载安装ELK6.8版本(此处省略)
ES在6.8以后发布的版本才有(7.0是发布在6.8之前的)
2、修改ES配置文件 elasticsearch.yml
在配置文件中添加:
xpack.security.enabled: true
基础版本的安全性功能是默认关闭的。
然后启动ES
./elasticsearch -d
3、设置内置用户密码
参考:内置用户
./bin/elasticsearch-setup-passwords interactive
这里设置的密码要记住,后面会使用到。我们设置简单的密码:123456(密码不能少于6位)
如果是Windows请使用CMD命令行执行
按照提示设置内置用户密码
4、设置kibana用户名密码
在kibana的配置文件kibana.yml里面添加
elasticsearch.username: "kibana"
elasticsearch.password: "123456"
5、然后启动kibana
启动kibana就可以使用用户名与密码进行访问。

Image.png


6、设置logstash用户名和密码
打开配置文件conf,在output中的elasticsearch中添加user、password
例:
output {
elasticsearch {
hosts => ["10.68.24.136:9200","10.68.24.137:9200"]
index => "%{[indexName]}-%{+YYYY.MM.dd}"
user => "logstash_system"
password => "123456"
}
收起阅读 »

社区日报 第685期 (2019-07-30)

1.如果你对于 elasticsearch 中 date 类型的使用有疑惑,不妨看看这篇文章(自行准备梯子)
http://t.cn/AiYvpm0g
2.Elasticsearch SIEM 官方介绍视频
http://t.cn/AiYv0T4F
3.ECE 2.3 版本发布,新增 RBAC 权限管理机制,快来看看吧
http://t.cn/AiYvWX17

编辑:rockybean
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.如果你对于 elasticsearch 中 date 类型的使用有疑惑,不妨看看这篇文章(自行准备梯子)
http://t.cn/AiYvpm0g
2.Elasticsearch SIEM 官方介绍视频
http://t.cn/AiYv0T4F
3.ECE 2.3 版本发布,新增 RBAC 权限管理机制,快来看看吧
http://t.cn/AiYvWX17

编辑:rockybean
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第684期 (2019-07-29)

1.不停服务 ElasticSearch 集群物理拆分
http://t.cn/Aij1b0yW
2.Elasticsearch 集群在QQ阅读评论服务的实践
http://t.cn/Aij1tGUf
3.聊聊Elasticsearch的CachedSupplier
http://t.cn/Aij1cSbG
 
编辑:cyberdak
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
 
 
继续阅读 »
1.不停服务 ElasticSearch 集群物理拆分
http://t.cn/Aij1b0yW
2.Elasticsearch 集群在QQ阅读评论服务的实践
http://t.cn/Aij1tGUf
3.聊聊Elasticsearch的CachedSupplier
http://t.cn/Aij1cSbG
 
编辑:cyberdak
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
 
  收起阅读 »

社区日报 第683期 (2019-07-28)

1.使用ELK和Logz.io记录Istio。
http://t.cn/AijlJa8t
2.ElasticSearch聚合简介。
http://t.cn/Aijl6gPy
3.(自备梯子)你的手机给你带来了头痛吗? OLED屏幕可能会受到责备。
http://t.cn/AijlSt8J

编辑:至尊宝
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.使用ELK和Logz.io记录Istio。
http://t.cn/AijlJa8t
2.ElasticSearch聚合简介。
http://t.cn/Aijl6gPy
3.(自备梯子)你的手机给你带来了头痛吗? OLED屏幕可能会受到责备。
http://t.cn/AijlSt8J

编辑:至尊宝
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第682期 (2019-07-27)

1.5个es优化的tips http://t.cn/AijNklla

2.用于调试es或solr查询结果的沙盒工具 http://t.cn/Aijp7c2o

3.jcseg:集成常用NLP功能的分词器 http://t.cn/R5iirZ2

继续阅读 »

1.5个es优化的tips http://t.cn/AijNklla

2.用于调试es或solr查询结果的沙盒工具 http://t.cn/Aijp7c2o

3.jcseg:集成常用NLP功能的分词器 http://t.cn/R5iirZ2

收起阅读 »

社区日报 第681期 (2019-07-26)

1、Rally实战Elasticsearch性能测试
https://tinyurl.com/y64bpgha
2、Elasticsearch企业级实战
https://tinyurl.com/y47c4lfq
3、Elasticsearch 7 处理syslog-ng日志
https://tinyurl.com/y2uqvmbv

编辑:铭毅天下
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
 
继续阅读 »
1、Rally实战Elasticsearch性能测试
https://tinyurl.com/y64bpgha
2、Elasticsearch企业级实战
https://tinyurl.com/y47c4lfq
3、Elasticsearch 7 处理syslog-ng日志
https://tinyurl.com/y2uqvmbv

编辑:铭毅天下
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
  收起阅读 »

社区日报 第680期 (2019-07-25)

1.阿里云10PB+/天的日志系统设计和实现
http://t.cn/Ai0WgRo5
2.使用Logstash集成JMS与ES搜索服务
http://t.cn/AijqBB4l
3.吃透Elasticsearch堆内存
http://t.cn/AijqBB4C

编辑:金桥
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1.阿里云10PB+/天的日志系统设计和实现
http://t.cn/Ai0WgRo5
2.使用Logstash集成JMS与ES搜索服务
http://t.cn/AijqBB4l
3.吃透Elasticsearch堆内存
http://t.cn/AijqBB4C

编辑:金桥
归档:https://ela.st/cn-daily-all 
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第679期 (2019-07-24)

1、看完这篇还不会 Elasticsearch,我跪搓衣板!
http://t.cn/AileIeIq
2、Elasticsearch SQL 用法详解
http://t.cn/AijPgMVl
3、ELK 7.0部署与架构分析
http://t.cn/AijPDV5L
 
编辑:江水
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、看完这篇还不会 Elasticsearch,我跪搓衣板!
http://t.cn/AileIeIq
2、Elasticsearch SQL 用法详解
http://t.cn/AijPgMVl
3、ELK 7.0部署与架构分析
http://t.cn/AijPDV5L
 
编辑:江水
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第678期 (2019-07-23)

1、gitlab使用ElasticSearch的挑战。
http://tinyurl.com/y6eoo2zy
2、Kibana进阶篇之如何可视化你的数据。
http://tinyurl.com/y2b26qnj
3、看Ubser如何使用ELK进行实时预测。
http://tinyurl.com/yyw5kn44

北京 Elastic Meetup 2019-08-24 开放报名了
https://www.bagevent.com/event/5520974

编辑:叮咚光军

归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、gitlab使用ElasticSearch的挑战。
http://tinyurl.com/y6eoo2zy
2、Kibana进阶篇之如何可视化你的数据。
http://tinyurl.com/y2b26qnj
3、看Ubser如何使用ELK进行实时预测。
http://tinyurl.com/yyw5kn44

北京 Elastic Meetup 2019-08-24 开放报名了
https://www.bagevent.com/event/5520974

编辑:叮咚光军

归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »

社区日报 第677期 (2019-07-22)

1、ElasticSearch在高并发复杂查询业务场景的应用
http://t.cn/AilTUc8N

2、谈一谈es的优势和限制
http://t.cn/AilT4JZD

3、使用elasticsearch实现十亿级数据的查询性能优化
http://t.cn/AilT6Bb4

编辑:cyberdak
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup
继续阅读 »
1、ElasticSearch在高并发复杂查询业务场景的应用
http://t.cn/AilTUc8N

2、谈一谈es的优势和限制
http://t.cn/AilT4JZD

3、使用elasticsearch实现十亿级数据的查询性能优化
http://t.cn/AilT6Bb4

编辑:cyberdak
归档:https://ela.st/cn-daily-all
订阅:https://ela.st/cn-daily-sub
沙龙:https://ela.st/cn-meetup 收起阅读 »