docker 如何安装elasticsearch
一.前言
最近项目更改接口调用日志的相关存储逻辑。
原先,项目采用的是 redis+oracle的方式存储接口调用日志。
即,系统接受到接口调用请求后,将调用日志对象存入redis的队列中。每隔一段时间,定时任务将redis队列里的一批日志消费掉,存入到oracle中。完成日志的存储。
现在打算修改为采取 kafka+es 的方式存储接口调用日志。
至于为啥做这方面的更改。
一方面,接口调用日志随着客户的接口调用激增而出现暴涨。虽然oracle日志是按月分表,但是月表的日志量也达到了10^7次方的数据量级别。后面还有进一步增大的可能性。单表过大会相当影响表的查询效率。使用es可以提高查询效率。
另一方面,我们每日需要对对日志进行复盘,生成统计级的数据。每月需要对一个月的数据进行统计,生成账单。如果用一个定时任务每天扫描全表的日志中当天的数据,进行统计,那会相当的消耗时间。但如果使用kafka则可以实时统计。
生产上有相应的资源可以申请,但是本地需要搭建可以使用的测试环境。
所以需要研究下elasticsearch的本地环境搭建,便于代码的相关测试。
二.环境搭建
1. docker拉取es镜像
docker pull elasticsearch:7.7.1
2.docker创建网络
docker network create network-nb
3. docker 启动 es
docker run -d --name es7 -e "discovery.type=single-node" --network network-nb --network-alias elasticsearch -e ES_JAVA_OPTS="-Xms256m -Xmx512m" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.1
参数 | 参数含义 | 具体解释 |
---|---|---|
–name | 名称 | 给容器起了一个名字 |
-p | 外部访问端口:容器端口 | 9200是供htpp访问端口,9300是供tcp访问的端口,如果不做端口映射,浏览器就不能访问elasticsearch的服务 |
–network | 网络名 | 用于多个服务通信与隔离,例如用kibana连接elasticsearch就需要他们在同一个网络下 |
–network-alias | ip别名 | 使得kibana可以不通过端口,而是用别名作为ip进行访问 |
3.致谢
- docker部署es和kibana的环境搭建 https://blog.youkuaiyun.com/qq_35429398/article/details/112857864
- Docker network第四讲-网络别名(Docker系列) https://blog.youkuaiyun.com/zsl129/article/details/53939631