温馨提示:这篇文章已超过463天没有更新,请注意相关的内容是否还可用!
摘要:,,本文介绍了Elasticsearch-7.8.0在Mac、Linux、Windows、CentOS 7.5集群以及Docker上的安装步骤。文章详细阐述了每个操作系统环境下的安装过程,包括单机安装和集群搭建,同时提供了docker环境下的安装指南。本文旨在帮助读者全面理解和掌握Elasticsearch的安装和配置,无论是在个人计算机还是生产环境中都能轻松应对。
目录
第一章 Elasticsearch-7.8.0单机安装

第二章 Elasticsearch-7.8.0集群基于Centos7
第三章 Elasticsearch-7.8.0通过Docker方式安装

第一章 Elasticsearch-7.8.0单机安装
Elasticsearch安装单机、Kibana安装单机
适用于mac、window、linux单机测试
1.1 安装 Elasticsearch-7.8.0
1.1.1 安装包下载
下载地址:https://www.elastic.co/downloads/past-releases#elasticsearch
1.1.2 解压安装ElasticSearch
- 解压elasticsearch-7.8.0-darwin-x86_64.tar.gz到/usr/local/modules目录下
➜ ~ tar -zxvf /opt/software/elasticsearch-7.8.0-darwin-x86_64.tar.gz -C /opt/module/
- 启动ElasticSearch服务
➜ ~ ./usr/local/modules/elasticsearch/elasticsearch-7.8.0/bin/elasticsearch
- 访问: http://localhost:9200/
1.2 安装Kibana-7.8.0
Kibana是一个用于探索、可视化和分享ES数据的客户端。
1.2.1 安装包下载
下载地址:https://www.elastic.co/downloads/past-releases#kibana
1.2.2 解压安装Kibana
- 解压kibana-7.8.0-darwin-x86_64.tar.gz到/usr/local/modules目录下
➜ ~ mv kibana-7.8.0-darwin-x86_64/ kibana-7.8.0
- 修改相关配置连接Elasticsearch
➜ ~ vim /usr/local/modules/elasticsearch/kibana-7.8.0/config/kibana.yml server.host: "localhost" server.port: 5601 elasticsearch.hosts: ["http://localhost:9200"] # 中文 i18n.locale: "zh-CN"
1.2.3 Kibana启动
- 启动Kibana
➜ ~ /usr/local/modules/elasticsearch/kibana-7.8.0/bin/kibana # 后台启动 ➜ ~ nohup ➜ ~ /bin/kibana &
- 浏览器访问: http://localhost:5601/app/kibana#/dev_tools/console
1.3 安装elasticsearch-analysis-ik-7.8.0
Elasticsearch-Analysis-IK是一个专门为Elasticsearch设计的中文分词器插件,它将Lucene IK分词器集成到Elasticsearch中,并支持自定义词典。
下载解压:https://github.com/infinilabs/analysis-ik/tags
解压elasticsearch-analysis-ik-7.8.0 到/usr/local/modules/elasticsearch/elasticsearch-7.8.0/plugins/ik目录下
重新启动Elasticsearch
./usr/local/modules/elasticsearch/elasticsearch-7.8.0/bin/elasticsearch
1.4 卸载Elasticsearch-7.8.0
- 停止服务后。执行下面命令
[wolffy@hadoop102 module]$ rm -rf /opt/module/elasticsearch-7.8.0 [wolffy@hadoop102 module]$ rm -rf kibana-7.8.0
第二章 Elasticsearch-7.8.0集群基于Centos7
Elasticsearch安装hadoop102、hadoop103、hadoop104
Kibana安装hadoop102
2.1 安装 Elasticsearch-7.8.0
Elasticsearch(ES)是一个基于Apache Lucene的开源的分布式、高扩展、近实时的搜索引擎。它主要用于海量数据的快速存储、实时检索和高效分析。通过简单易用的RESTful API,它隐藏了Lucene的复杂性,使得全文搜索变得简单。
2.1.1 安装包下载
下载地址:https://www.elastic.co/downloads/past-releases#elasticsearch
2.1.2 解压安装ElasticSearch
- 解压elasticsearch-7.8.0.tar.gz到/opt/module目录下,并更名
[wolffy@hadoop102 software]$ tar -zxvf /opt/software/elasticsearch-7.8.0-linux-x86_64.tar.gz -C /opt/module/
- 在/opt/module/elasticsearch-7.8.0路径下创建data文件夹
[wolffy@hadoop102 elasticsearch-7.8.0]$ mkdir data
- 修改配置文件/opt/module/elasticsearch-7.8.0/config/elasticsearch.yml
[wolffy@hadoop102 config]$ vi elasticsearch.yml #-----------------------Cluster----------------------- cluster.name: myes #-----------------------Node----------------------- node.name: node102 #-----------------------Paths----------------------- path.data: /opt/module/elasticsearch-7.8.0/data #-----------------------Memory----------------------- bootstrap.memory_lock: false #-----------------------Network----------------------- network.host: hadoop102 #-----------------------Discovery----------------------- discovery.seed_hosts: ["hadoop102", "hadoop103","hadoop104"] cluster.initial_master_nodes: ["node102", "node103","node104"]
cluster.name:如果要配置集群需要两个节点上的elasticsearch配置的cluster.name相同,都启动可以自动组成集群,这里如果不改cluster.name则默认是cluster.name=my-application,
node.name:随意取但是集群内的各节点不能相同
修改后的每行前面不能有空格,修改后的“:”后面必须有一个空格
- 分发至hadoop103以及hadoop104,分发之后修改配置文件:
[wolffy@hadoop102 module]$ xsync.sh elasticsearch-7.8.0/
[wolffy@hadoop103 elasticsearch-7.8.0]$ vim /opt/module/elasticsearch-7.8.0/config/elasticsearch.yml # 在hadoop103机器修改以下信息 node.name: node103 network.host: hadoop103 [wolffy@hadoop104 elasticsearch-7.8.0]$ vim /opt/module/elasticsearch-7.8.0/config/elasticsearch.yml # 在hadoop104机器修改以下信息 node.name: node104 network.host: hadoop104
2.1.3 调整linux内核参数
- 切换到root用户,编辑limits.conf 添加类似如下内容
[root@hadoop102 elasticsearch-7.8.0]# vi /etc/security/limits.conf * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
注意:*不要省略掉。以上操作为增加Linux文件系统中可以同时打开的文件句柄数。
- 切换到root用户修改配置sysctl.conf
[root@hadoop102 elasticsearch-7.8.0]# vi /etc/sysctl.conf vm.max_map_count=655360
以上修改的Linux配置需要分发至其他节点.然后重新启动Linux,必须重启!!!
2.1.4 ElasticSearch启动
- 单点启动
[wolffy@hadoop102 elasticsearch-7.8.0]$ /opt/module/elasticsearch-7.8.0/bin/elasticsearch [wolffy@hadoop103 elasticsearch-7.8.0]$ /opt/module/elasticsearch-7.8.0/bin/elasticsearch [wolffy@hadoop104 elasticsearch-7.8.0]$ /opt/module/elasticsearch-7.8.0/bin/elasticsearch
- 群起脚本elasticsearch_control.sh
[wolffy@hadoop102 bin]$ vim /home/wolffy/bin/elasticsearch_control.sh #!/bin/bash # 请确保SSH密钥认证已经设置好,以便脚本能够无密码登录到每台机器上执行命令 # # 定义Elasticsearch的地址和端口 ELASTICSEARCH_HOST=("hadoop102" "hadoop103" "hadoop104") ELASTICSEARCH_PORT="9200" # 定义启动Elasticsearch的命令 START_CMD="nohup /opt/module/elasticsearch-7.8.0/bin/elasticsearch > /dev/null 2>&1 &" # 定义停止Elasticsearch的命令 STOP_CMD="ps -ef | grep Elasticsearch | grep -v grep | awk '{print $2}' | xargs kill " # 定义检查Elasticsearch状态的命令 STATUS_CMD="curl http://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}/_cat/nodes?v" # 函数:启动Elasticsearch服务 start_elasticsearch() { for i in "${ELASTICSEARCH_HOST[@]}"; do echo "Starting Elasticsearch on $i..." ssh $i "$START_CMD" if [ $? -eq 0 ]; then echo "Elasticsearch started successfully on $i." else echo "Failed to start Elasticsearch on $i." fi done } # 函数:停止Elasticsearch服务 stop_elasticsearch() { for i in "${ELASTICSEARCH_HOST[@]}"; do echo "Stopping Elasticsearch on $i..." ssh $i "$STOP_CMD" if [ $? -eq 0 ]; then echo "Elasticsearch stopped successfully on $i." else echo "Failed to stop Elasticsearch on $i." fi done } # 函数:检查Elasticsearch服务状态 check_elasticsearch_status() { for i in "${ELASTICSEARCH_HOST[@]}"; do echo "Checking Elasticsearch status on $i..." ssh $i "$STATUS_CMD" # 执行curl命令并输出集群健康状态 echo "Checking Elasticsearch cluster health..." $CHECK_HEALTH_CMD # 检查curl命令的退出状态,如果非0则输出错误消息 if [ $? -ne 0 ]; then echo "Failed to retrieve Elasticsearch cluster health." exit 1 fi done } # 解析命令行参数 case "" in start) start_elasticsearch ;; stop) stop_elasticsearch ;; status) check_elasticsearch_status ;; *) echo "Usage:
2.2 安装Kibana-7.8.0
{start|stop|status}" exit 1 ;; esac [wolffy@hadoop102 bin]$ chmod +x /home/wolffy/bin/elasticsearch_control.sh [wolffy@hadoop102 bin]$ elasticsearch_control.sh start [wolffy@hadoop102 bin]$ elasticsearch_control.sh status [wolffy@hadoop102 bin]$ elasticsearch_control.sh stop- 访问:http://hadoop102:9200/_cat/nodes?v
2.2.1 安装包下载
Kibana是一个用于探索、可视化和分享ES数据的客户端。因此在任一节点安装即可。
2.2.2 解压安装Kibana
下载地址:https://www.elastic.co/downloads/past-releases#kibana
[wolffy@hadoop102 module]$ tar -zxvf /opt/software/kibana-7.8.0-linux-x86_64.tar.gz -C /opt/module/ [wolffy@hadoop102 module]$ mv /opt/module/kibana-7.8.0-linux-x86_64/ /opt/module/kibana-7.8.0
- 将kibana压缩包上传到所安装节点的指定目录
[wolffy@hadoop102 kibana-7.8.0]$ vi config/kibana.yml server.host: "hadoop102" server.port: 5601 elasticsearch.hosts: ["http://hadoop102:9200"] i18n.locale: "zh-CN"
- 修改相关配置连接Elasticsearch
2.2.3 Kibana启动
[wolffy@hadoop102 kibana-7.8.0]$ bin/kibana
- 启动Kibana
[wolffy@hadoop102 bin]$ vim /home/wolffy/bin/kibana_control.sh #!/bin/bash # 定义Kibana的安装路径 KIBANA_HOME="/opt/module/kibana-7.8.0" # 定义Kibana的进程名或关键字,用于查找进程ID KIBANA_PROCESS_NAME="node ./bin/../src/cli" # 函数:启动Kibana start_kibana() { # 切换到Kibana的安装目录 cd "$KIBANA_HOME" || exit # 启动Kibana echo "Starting Kibana..." nohup ./bin/kibana &> kibana.log & # 在后台启动Kibana并将输出重定向到kibana.log # 检查Kibana进程是否正在运行(可选) sleep 5 # 等待Kibana启动 if pgrep -f "$KIBANA_PROCESS_NAME" > /dev/null; then echo "Kibana started successfully." else echo "Failed to start Kibana." exit 1 fi } # 函数:停止Kibana stop_kibana() { # 查找Kibana的进程ID KIBANA_PID=$(pgrep -f "$KIBANA_PROCESS_NAME") # 检查是否找到了Kibana的进程ID if [ -z "$KIBANA_PID" ]; then echo "Kibana is not running." exit 0 fi # 停止Kibana进程 echo "Stopping Kibana..." kill "$KIBANA_PID" # 等待Kibana进程结束 wait "$KIBANA_PID" || true # 检查Kibana是否已停止 if pgrep -f "$KIBANA_PROCESS_NAME" > /dev/null; then echo "Failed to stop Kibana." exit 1 else echo "Kibana stopped successfully." fi } # 检查传入的参数 case "" in start) start_kibana ;; stop) stop_kibana ;; *) echo "Usage:
2.3 安装elasticsearch-analysis-ik-7.8.0
{start|stop}" exit 1 ;; esac [wolffy@hadoop102 bin]$ chmod +x /home/wolffy/bin/kibana_control.sh- Kibana启停脚本(安装nodejs)
[wolffy@hadoop102 elasticsearch-7.8.0]$ cd plugins/ [wolffy@hadoop102 plugins]$ mkdir ik [wolffy@hadoop102 plugins]$ cd ik [wolffy@hadoop102 ik]$ unzip /opt/software/elasticsearch-analysis-ik-7.8.0.zip [wolffy@hadoop102 ik]$ cp /opt/software/elasticsearch-analysis-ik-7.8.0/* /opt/module/elasticsearch-7.8.0/plugins/ik
- 浏览器访问:http://hadoop102:5601/app/kibana#/dev_tools/console
[wolffy@hadoop102 plugins]$ xsync.sh ik
Elasticsearch-Analysis-IK是一个专门为Elasticsearch设计的中文分词器插件,它将Lucene IK分词器集成到Elasticsearch中,并支持自定义词典。
- 下载解压:https://github.com/infinilabs/analysis-ik/tags
[wolffy@hadoop102 plugins]$ elasticsearch_control.sh start
- 分发分词器到所有节点
2.4 卸载Elasticsearch-7.8.0和Kibana-7.8.0
- 重新启动Elasticsearch
[wolffy@hadoop102 module]$ rm -rf /opt/module/elasticsearch-7.8.0 [wolffy@hadoop102 module]$ rm -rf kibana-7.8.0
2.5 注意
- 停止服务后。执行下面命令
useradd wolffy *# 新增wolffy用户* passwd wolffy *# 为wolffy用户设置密码* 5、为新用户授权 chown -R wolffy:wolffy /opt/elasticsearch-7.4.0 *#文件夹所有者* 将 /opt/elasticsearch-7.4.0文件夹授权给wolffy用户:wolffy用户组
打开elasticsearch.yml 新增 xpack.security.enabled: false xpack.security.transport.ssl.enabled: false
因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令:
第三章 Elasticsearch-7.8.0通过Docker方式安装
8.0以上需要增加如下配置
3.1 安装 Elasticsearch-7.8.0
3.1.1 创建网络
# 因为需要部署kibana容器,因此需要让es和kibana容器互联。 docker network create es-net
3.1.2 拉取镜像
# 拉取镜像 docker pull elasticsearch:7.8.0
3.1.3 创建挂载点目录
# 创建挂载点目录 mkdir -p \ /Users/wolffy/docker/elasticsearch-7.8.0/data \ /Users/wolffy/docker/elasticsearch-7.8.0/config \ /Users/wolffy/docker/elasticsearch-7.8.0/plugins # 修改权限 chmod 777 /Users/wolffy/docker/elasticsearch-7.8.0/data chmod 777 /Users/wolffy/docker/elasticsearch-7.8.0/config chmod 777 /Users/wolffy/docker/elasticsearch-7.8.0/plugins
3.1.4 创建容器
docker run -d \ --restart=always \ --name elasticsearch-7.8.0 \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \ --privileged \ -v /Users/wolffy/docker/elasticsearch-7.8.0/data:/usr/share/elasticsearch/data \ -v /Users/wolffy/docker/elasticsearch-7.8.0/plugins:/usr/share/elasticsearch/plugins \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ elasticsearch:7.8.0
Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticse
宿主机的目录权限问题 :用户目录一定要家目录。这样用户才有权限问题。
- -d: 在后台运行容器,并返回容器ID。
- --restart=always: 无论容器的退出状态如何,始终重启容器。这确保了即使Elasticsearch服务因为某种原因停止,容器也会自动重启。
- --name elasticsearch-7.8.0: 为容器指定一个名称,这里是elasticsearch-7.8.0。
- --network es-net: 将容器连接到名为es-net的Docker网络。这允许容器与同一网络上的其他容器通信。
- -p 9200:9200: 将宿主机的9200端口映射到容器内的9200端口,用于Elasticsearch的HTTP接口。
- -p 9300:9300: 将宿主机的9300端口映射到容器内的9300端口,用于Elasticsearch的传输层通信。
- --privileged: 给予容器扩展的权限,让容器内的root用户拥有宿主机的root权限。这通常不是最佳实践,因为它可能会带来安全风险,但在某些情况下,Elasticsearch可能需要这些权限来正确运行。
- -v /Users/wolffy/docker/elasticsearch-7.8.0/data:/usr/share/elasticsearch/data: 将宿主机的/Users/wolffy/docker/elasticsearch-7.8.0/data目录映射到容器内的/usr/share/elasticsearch/data目录,用于存储Elasticsearch的数据。
- -v /Users/wolffy/docker/elasticsearch-7.8.0/plugins:/usr/share/elasticsearch/plugins: 将宿主机的/Users/wolffy/docker/elasticsearch-7.8.0/plugins目录映射到容器内的/usr/share/elasticsearch/plugins目录,允许你将自定义插件安装在宿主机上,并在容器中使用。
- -e "discovery.type=single-node": 设置环境变量discovery.type为single-node,告诉Elasticsearch以单节点模式运行。这在开发或测试环境中很常见,但在生产环境中,你可能需要配置一个更复杂的集群。
- -e "ES_JAVA_OPTS=-Xms512m -Xmx512m": 设置环境变量ES_JAVA_OPTS来配置Elasticsearch的Java虚拟机。这里,-Xms512m设置了JVM的初始堆大小为512MB,-Xmx512m设置了最大堆大小为512MB。
3.1.5 编写elasticsearch.yml[可选]
# 先进入es容器 docker exec -it elasticsearch-7.8.0 /bin/bash # 关闭 密码安全验证 echo 'xpack.security.enabled: false' >> config/elasticsearch.yml cat config/elasticsearch.yml
- 停止服务后。执行下面命令
- elasticsearch:7.8.0: 指定要运行的Elasticsearch镜像及其版本,这里是elasticsearch:7.8.0。
3.1.6 重启elasticsearch容器测试
docker restart es docker start es
xpack.security.enabled: false elasticsearch-8.x以下无需配置
3.2 安装Kibana-7.8.0
3.2.1 拉取镜像
http://localhost:9200/
docker pull kibana:7.8.0
3.2.2 创建挂载点目录
mkdir -p \ /Users/wolffy/docker/kibana-7.8.0/config \ /Users/wolffy/docker/kibana-7.8.0/data
chmod 777 /Users/wolffy/docker/kibana-7.8.0/config chmod 777 /Users/wolffy/docker/kibana-7.8.0/data
3.2.3 创建kibana容器
docker run -d \ --restart=always \ --name kibana-7.8.0 \ --network es-net \ -p 5601:5601 \ -e ELASTICSEARCH_HOSTS=http://elasticsearch-7.8.0:9200 \ kibana:7.8.0
- -d: 在后台运行容器并返回容器ID。
- --restart=always: 无论容器的退出状态如何,始终重启容器。
- --name kibana: 为容器指定一个名称,这里是kibana。
- --network es-net: 将容器连接到名为es-net的Docker网络。这通常是为了确保Kibana容器可以与在同一网络上的Elasticsearch容器通信。
- -p 5601:5601: 将宿主机的5601端口映射到容器内的5601端口。Kibana默认使用5601端口,通过这个映射,你可以通过访问宿主机的5601端口来访问Kibana。
- -e ELASTICSEARCH_HOSTS=http://elasticsearch-7.8.0:9200: 设置环境变量ELASTICSEARCH_HOSTS,用于指定Kibana应该连接到的Elasticsearch主机和端口。这里假设Elasticsearch容器的名称是elasticsearch-7.8.0,并且它运行在9200端口上。
- kibana:7.8.0: 指定要运行的Kibana镜像及其版本,这里是kibana:7.8.0。
3.3.1 进入Elasticsearch容器
耐心等待20s初始化完毕即可
➜ ~ docker exec -it elasticsearch-7.8.0 /bin/bash
安装IK分词器的版本,必须和Elasticsearch的版本一致。我们采用离线安装方式进行。
➜ ~ docker cp /Users/wolffy/docker/elasticsearch-analysis-ik-7.8.0 elasticsearch-7.8.0:/usr/share/elasticsearch/plugins/ik [root@45c518cb8384 ik]# cd /usr/share/elasticsearch/plugins/ik/elasticsearch-analysis-ik-7.8.0 [root@45c518cb8384 ik]# mv -r * ../
- docker cp 复制文件到docker内部
- /Users/wolffy/docker/elasticsearch-analysis-ik-7.8.0 ik分词器路径
- elasticsearch-7.8.0 es容器名称
3.2.4 测试
3.3 安装elasticsearch-analysis-ik-7.8.0
3.3.2 重启Elasticsearch
docker restart elasticsearch-7.8.0
- 重新启动Elasticsearch
- /usr/share/elasticsearch/plugins/ik docker内es插件路径
注意:不能有.Ds_store 文件否则启动不起来
3.3.3 测试
GET _analyze { "analyzer": "ik_smart", "text":"今天天气不错" }
{ "tokens" : [ { "token" : "今天天气", "start_offset" : 0, "end_offset" : 4, "type" : "CN_WORD", "position" : 0 }, { "token" : "不错", "start_offset" : 4, "end_offset" : 6, "type" : "CN_WORD", "position" : 1 } ] }
更多优质资源:牛牛IT资源网 www.cowcowit.com
- 分发分词器到所有节点
- 下载解压:https://github.com/infinilabs/analysis-ik/tags
- 浏览器访问:http://hadoop102:5601/app/kibana#/dev_tools/console
- Kibana启停脚本(安装nodejs)
- 启动Kibana
- 修改相关配置连接Elasticsearch
- 将kibana压缩包上传到所安装节点的指定目录
- 访问:http://hadoop102:9200/_cat/nodes?v
- 群起脚本elasticsearch_control.sh
- 单点启动
- 切换到root用户修改配置sysctl.conf
- 切换到root用户,编辑limits.conf 添加类似如下内容
- 分发至hadoop103以及hadoop104,分发之后修改配置文件:
- 修改配置文件/opt/module/elasticsearch-7.8.0/config/elasticsearch.yml
- 在/opt/module/elasticsearch-7.8.0路径下创建data文件夹
- 解压elasticsearch-7.8.0.tar.gz到/opt/module目录下,并更名
- 停止服务后。执行下面命令
- 浏览器访问: http://localhost:5601/app/kibana#/dev_tools/console
- 启动Kibana
- 修改相关配置连接Elasticsearch
- 解压kibana-7.8.0-darwin-x86_64.tar.gz到/usr/local/modules目录下
- 访问: http://localhost:9200/
- 启动ElasticSearch服务
还没有评论,来说两句吧...