Elasticsearch数据库 | Elasticsearch-7.5.0应用搭建实战
Elasticsearch 是一个可用于分布式以及符合RESTful 风格的搜索和数据分析引擎。—— Elastic Stack 官网
1|0搭建Elasticsearch的“那些事儿"
有一天,在黄金梅丽号的甲板上,韦柏告诉萨博,需要在接下来的项目开发过程中,运用到Elasticsearch数据库,主要用于黄金梅丽号上的各种设备采集数据实时查询,或许后期还会运用于分布式日志系统的搭建运用等,让萨博先做一次技术预研。于是,在萨博查询大量的资料发现,关于Elasticsearch数据库的搭建,网上的资料几乎是千篇一律,或者多数都是没有一个完整的流程。甚至,还发现,对于Elasticsearch数据库实际应用方面,大多数海贼只局限于ELK等这样的情况,就像是大多数海贼提到Redis,就只觉得这个玩意儿,只能用于缓存层面,但是实际上人家的功能强大到超出了海贼的想象空间。甚至于,萨博在一个阿里巴巴的地方,找到了关于Elasticsearch数据库免费试用的资源,但是对于免费的午餐,也许那一天收费之后,那就只能用一首“浪浪”来祭奠这万恶的黄金之恶。于是在萨博精心研究和分析发现,除了传统部署Elasticsearch数据库之外,有个叫Docker 的东西,除了能够稳定运行Elasticsearch数据库之外,还能节省不少的服务器内存。于是呀,萨博就开始了探索在Docker上搭建Elasticsearch之之路......
2|0Docker部署Elasticsearch的“那些事儿"
2|11.基础先决条件
阿里云或者虚拟机VM主机一个,并且自行装有Docker容器:
ps[⚠️注意事项]:
对于Docker安装请参考:Linux环境基于CentOS7 搭建部署Docker容器
2|22.最大文件打开数
[2.1]参数优化:ulimit -a |grep open
[2.2] 修改配置文件: /etc/security/limits.conf
[2.3] 确认是否修改: ulimit -a |grep open
2|33.调整系统进程数
修改方法:vim /etc/security/limits.d/20-nproc.conf
2|44.调整虚拟内存和最大并发连接数
虚拟内存(Virtual memory)->vm.max_map_count
Elasticsearch默认使用 hybrid mmapfs / niofs 目录来存储索引。默认操作系统对mmap计数的限制太低,可能引发内存不足的异常
[1]临时解决方法:
如果不优化会出现启动Elasticsearch的时候会出现如下提示:
[2]永久生效方案:更新系统文件/etc/sysctl.conf的vm.max_map_count字段
执行命令:vim /etc/sysctl.conf
加载到系统:sysctl -p --load /etc/sysctl.conf
2|55.关闭elasticsearch自检测
在elasticsearch.yml中添加配置项:
ps[⚠️注意事项]:
主要是避免以下问题:
[1]最大文件打开数: max file descriptors [1024] for elasticsearch process is too low, increase to at least [65536]
[2]调整虚拟内存和最大并发连接数: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[3]关闭elasticsearch自检测: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
[4]调整系统进程数: max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
3|0实战部署ElasticSearch服务
Docker 部署应用服务的基本步骤:Search[查询镜像]->Pull[拉取镜像]->Run[部署镜像]
1.查询Elasticsearch 镜像:
ps[注意事项]:
- 一般拉取镜像资源都是从Docker官方仓库[docker-hub]拉取,或者自己构建的Docker云仓库aliyun-docker 等
- 本教程选取的ELK镜像均是基于ELK官方Docker仓库elastic-io
2.拉取Elasticsearch 镜像:
ps[注意事项]:
1.本教程采用7.3.x版本,目前最新版本7.4.x[主要用7.3.x版本在阿里云搭建过,避免入坑问题]
2.拉取的过程中可能会出现[net/http: TLS handshake timeout]问题,多尝试几次,主要是网络带宽限制问题
3.修改镜像名称:
ps[注意事项]:
1.名称过长导致查看些许不便,通过docker tag source-image[来源镜像] target-image[目标镜像],推荐统一采用[target-image:target-version]格式定义,且不占用空间,相当于重命名镜像
2.对于拉取kibana[docker.elastic.co/kibana/kibana:7.3.1]和logstash[docker.elastic.co/logstash/logstash:7.3.1] 都建议修改。
4.部署镜像服务:
部署命令:
默认配置目录:
查看容器列表:
(https://ftp.bmp.ovh/imgs/2019/11/d7e09058af3fadbd.png)
ps[注意事项]:
1.需要开放端口[9200和9300]->9200作为Http协议,主要用于外部通讯,9300作为Tcp协议,jar之间就是通过tcp协议通讯,通常部署集群就是通过9300通信。推荐[宿主机自定义端口:9200]
2.--restart=always :配置容器重启策略,当宿主机重启由于配置了开机自启动,不用手动启动
3.--privileged:配置容器操作权限[true-root操作权限,false-当前容器用户操作权限]
4.对于部署网络模式推荐默认桥接模式,也自定义可以host模式等
5.修改配置:
进入容器:docker exec -it container-id[容器id] or container-name[容器名称] /bin/bash
例如:docker exec -it f2d2e97da375 /bin/bash #f2d2e97da375-> container-id
修改配置文件:
添加跨域配置:http.cors.enabled: true && http.cors.allow-origin: "*"
然后退出exit容器,在宿主机重启容器:docker restart container-id[容器id] or container-name[容器名称]
docker restart f2d2e97da375
ps[注意事项]:
1.进入容器方式:包括使用 docker attach 命令或 docker exec 命令,
推荐使用 docker exec 命令。原因:
- docker attach: 使用exit退出容器,会导致容器的停止
- docker exec:使用exit退出容器,不会导致容器的停止
- 参考docker进入容器的几种方法博客-docker进入容器的几种方法
2.如果Docker安装了可视化界面 Portainer,推荐采用这种方式进入容器:
4|0搭建部署ElasticSearch-Head服务
ElasticSearch-Head:弹性搜索集群的Web前端界面,是使用Nodjs构建的,主要用于查看ElasticSearch相关信息
1.拉取Elasticsearch-Head 镜像:docker pull mobz/elasticsearch-head:5
2.修改Elasticsearch-Head 镜像名称:docker tag mobz/elasticsearch-head:5 elasticsearch-head:latest
3.部署Elasticsearch-Head 容器:
查看容器服务:
4.浏览器访问:http://remote-ip:9100/
5|0实战测试ElasticSearch-Head服务
2.设置请求头:application/json;charset=UTF-8
3.发送PUT请求:http://remote-ip/device/deviceData/QC00020000060100000001
6|0实战搭建ElasticSearch总结
1.部署基本命令:
2.配置文件[elasticsearch.yml ]:
3.分词插件安装:
4.Docker 部署 ElasticSearch-Head:
5.ElasticSearch-Head 使用406错误:
ajaxSettings部分json配置:
inspectData 部分json配置:
版权声明:本文为博主原创文章,遵循相关版权协议,如若转载或者分享请附上原文出处链接和链接来源。
__EOF__

本文链接:https://www.cnblogs.com/mazhilin/p/13934765.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:Copyright © 2018-2021 PivotalCloud Technology Systems Incorporated. All rights reserved.
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示