一、Elasticsearch 简介
Elasticsearch 是一个基于 Lucene 的分布式搜索引擎,提供全文检索、结构化搜索、聚合分析等功能。
它是 ELK(Elasticsearch + Logstash + Kibana)技术栈的核心组件。
适合用于:日志分析、网站搜索引擎、指标分析、数据监控等。
二、安装
###我这里准备了三台机器
####java环境
yum install -y java-11-openjdk java-11-openjdk-devel
java -version
1、单点部署
配置repos
cd /etc/yum.repos.d/ vim elasticsearch.repo [elasticsearch] name=Elasticsearch repository for 9.x packages baseurl=https://artifacts.elastic.co/packages/9.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=0 autorefresh=1 type=rpm-mdsudo yum install --enablerepo=elasticsearch elasticsearch sudo dnf install --enablerepo=elasticsearch elasticsearch
1.1、配置文件
# 修改es的配置文件 vim /etc/elasticsearch/elasticsearch.yml # ES服务监听对外暴露服务的地址 network.host: 0.0.0.0 # 指定ES集群的节点IP discovery.seed_hosts: ["192.168.200.201"] # 指定参与master选举的节点 cluster.initial_master_nodes: ["192.168.200.201"] # 启动ES服务 systemctl enable --now elasticsearch # 验证节点是否正常工作 [root@elk101.xiao.com ~]# ss -ntl ... LISTEN 0 128 [::]:9200 [::]:* LISTEN 0 128 [::]:9300 [::]:*- 9200端口作用:
对ES集群外部提供http/https服务。可以理解为对客户端提供服务。9300端口作用:
对ES集群内部进行数据通信传输端口。走的时候tcp协议
######如果遇到集群的uuid为"_na_"情况时,可以执行如下操作:######
###可能是ip或自己解析的域名错误
- systemctl stop elasticsearch.service
- rm -rf /var/lib/elasticsearch/* /var/log/elasticsearch/* /tmp/*
- systemctl start elasticsearch.service
- curl 192.168.200.201:9200
2、集群部署
####二进制部署 (1)elk201配置集群免密登录及同步脚本 #修改主机列表 cat >> /etc/hosts <<'EOF' 192.168.200.201 elk201.com 192.168.200.202 elk202.com 192.168.200.203 elk203.com EOF # elk201节点上生成密钥对 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q ################################################################## ssh-keygen SSH 密钥生成工具 -t rsa 指定密钥类型为 RSA(现在常用的是 ed25519,但 RSA 依然广泛支持) -P '' 设置私钥的密码为空密码(-P 是 passphrase 的意思) -f ~/.ssh/id_rsa 指定生成的密钥文件保存位置: ~/.ssh/id_rsa 是私钥, ~/.ssh/id_rsa.pub 是对应的公钥 -q 静默模式,不显示提示信息(quiet 模式) #################################################################### # elk101配置所有集群节点的免密登录 for ((host_id=201;host_id<=203;host_id++));do ssh-copy-id elk${host_id}.com ;done # 链接测试 ssh 'elk201.com' ssh 'elk202.com' ssh 'elk203.com' # 所有节点安装rsync数据同步工具 yum -y install rsync # 编写同步脚本 cat > /usr/local/sbin/data_rsync.sh <<'EOF' #!/bin/bash if [ $# -ne 1 ];then echo "Usage: $0 /path/to/file(绝对路径)" exit fi # 判断文件是否存在 if [ ! -e $1 ];then echo "[ $1 ] dir or file not find!" exit fi # 获取父路径 fullpath=`dirname $1` # 获取子路径 basename=`basename $1` # 进入到父路径 cd $fullpath for ((host_id=202;host_id<=203;host_id++)) do # 使得终端输出变为绿色 tput setaf 2 echo ===== rsyncing elk${host_id}.com: $basename ===== # 使得终端恢复原来的颜色 tput setaf 7 # 将数据同步到其他两个节点 rsync -apz $basename `whoami`@elk${host_id}.com:$fullpath if [ $? -eq 0 ];then echo "命令执行成功!" fi done EOF # 给脚本授权 chmod +x /usr/local/sbin/data_rsync.sh #(2)elk201下载ES软件包 curl -o elasticsearch-7.17.5-linux-x86_64.tar.gz z #(3)所有节点创建运行ES服务的用户 useradd -u 2025 xiao #(4)elk201创建ElasticSearch的工作目录 # 可以如下操作 mkdir -pv /xiao/{data,logs,softwares}/es7 chown xiao:xiao -R /xiao/{softwares,data,logs}/es7/ ll /xiao/{data,logs,softwares}/es7 -d # 也可以如下操作(推荐) install -d /xiao/{data,logs,softwares}/es7 -o xiao -g xiao # elk101解压软件包 tar xf elasticsearch-7.17.5-linux-x86_64.tar.gz -C /xiao/softwares/es7/ chown -R xiao:xiao /xiao/softwares/es7/elasticsearch-7.17.5 # 加权限 # elk101修改配置文件 [root@elk101.xiao.com ~]# yy /xiao/softwares/es7/elasticsearch-7.17.5/config/elasticsearch.yml cluster.name: xiao-linux85-binary path.data: /xiao/data/es7 path.logs: /xiao/logs/es7 network.host: 0.0.0.0 discovery.seed_hosts: ["elk101.com","elk102.com","elk103.com"] cluster.initial_master_nodes: ["elk101.com","elk102.com","elk103.com"] [root@elk101.xiao.com ~]# # elk101同步程序目录 [root@elk101.xiao.com ~]# data_rsync.sh /xiao # elk101节点针对ES基础调优 # 修改文件打开数量上线,修改后需要断开会话 [root@elk101.xiao.com ~]# cat /etc/security/limits.d/es7.conf * soft nofile 65535 * hard nofile 131070 * hard nproc 8192 [root@elk101.xiao.com ~]# ulimit -Sn 65535 [root@elk101.xiao.com ~]# ulimit -Hn 131070 # 调大内核虚拟内存映射值 [root@elk101.xiao.com ~]# cat /etc/sysctl.d/es.conf vm.max_map_count=524288 [root@elk101.xiao.com ~]# sysctl -q vm.max_map_count vm.max_map_count = 65530 [root@elk101.xiao.com ~]# sysctl -f /etc/sysctl.d/es.conf vm.max_map_count = 524288 [root@elk101.xiao.com ~]# sysctl -q vm.max_map_count vm.max_map_count = 524288 # 同步调优文件 [root@elk101.xiao.com ~]# data_rsync.sh /etc/sysctl.d/es.conf [root@elk101.xiao.com ~]# data_rsync.sh /etc/security/limits.d/es7.conf [root@elk101.xiao.com ~]# data_rsync.sh /etc/hosts #所有节点启动服务 # 先断开连接 让文件打开数量上限生效。 # 使得内核参数生效 sysctl -f /etc/sysctl.d/es.conf # 后台启动es服务 su xiao -c '/xiao/softwares/es7/elasticsearch-7.17.5/bin/elasticsearch -d' # 验证服务是否正常 [root@elk1 ~]# curl 192.168.200.201:9200 [root@elk1 config]# curl 192.168.200.201:9200 { "name" : "elk201.com", "cluster_name" : "xiaop", "cluster_uuid" : "D3J7tGzoRe-4yuJRKWOzNQ", "version" : { "number" : "7.17.5", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "8d61b4f7ddf931f219e3745f295ed2bbc50c8e84", "build_date" : "2022-06-23T21:57:28.736740635Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } [root@elk1 config]# curl 192.168.200.201:9200/_cat/nodes 192.168.200.202 34 96 23 1.31 0.68 0.38 cdfhilmrstw - elk202.com 192.168.200.203 40 96 26 0.66 0.45 0.31 cdfhilmrstw * elk203.com 192.168.200.201 40 95 21 0.43 0.30 0.26 cdfhilmrstw - elk201.com [root@elk1 config]#若集群UUID出现"na"状态时,做如下动作,所有节点操作: pkill java rm -rf /xiao/data/es7/* /xiao/logs/es7/* /tmp/*
如果不对,检查名字、网段,ip
三、使用systemctl管理ES服务
#1.elk101停止ES服务 pkill java #2.elk101编写ES启动脚本 cat > /usr/lib/systemd/system/es7.service <<EOF [Unit] Description=xiao-es7 After=network.target [Service] Type=simple ExecStart=/xiao/softwares/es7/elasticsearch-7.17.5/bin/elasticsearch User=xiao LimitNOFILE=131070 [Install] WantedBy=multi-user.target EOF #3.elk101加载脚本 systemctl daemon-reload #4.elk101设置开机自启动 systemctl enable --now es7 #5.elk101查看服务是否正常运行 systemctl status es7 ss -ntl curl 192.168.200.201:9200/_cat/nodes #6.其他节点使用脚本 data_rsync.sh /usr/lib/systemd/system/es7.service #7.其他节点使用脚本管理 pkill java systemctl enable --now es7 systemctl status es7
四、ES集群的常见术语
1、使用Postman软件
1.1、查看索引
查看所有的索引
curl -X GET 192.168.200.201:9200/_cat/indices
1.2、创建索引(相当于数据库)
创建默认索引,默认是一个分片和一个副本
curl -X PUT "192.168.200.201:9200/my-index"
1.3、修改索引
_settings
(1)修改副本 curl -XPUT 192.168.200.201:9200/xiaop/_settings { "number_of_replicas": 1 } (2)修改分片,不能修改 curl -X PUT 192.168.200.201:9200/xiaop/_settings { "number_of_shards": 10 }
1.4删除索引
(1)删除单个索引 curl -X DELETE 192.168.200.201:9200/xiaop-003 (2)基于通配符删除多个索引 curl -X DELETE 192.168.200.201:9200/xiaop-*delete
1.5索引别名
(1)添加索引别名 POST http://192.168.200.201:9200/_aliases { "actions": [ { "add": { "index": "xiaop", "alias": "xiaoptx" } } ] }_aliases
(2)查看索引别名 GET http://192.168.200.201:9200/_aliases
1.6、删除索引别名
POST http://192.168.200.201:9200/_aliases{ "actions": [ { "remove": { "index": "xiaop", "alias": "xiaoptx" } } ] }
1.7、修改索引别名
{ "actions": [ { "remove": { "index": "xiaop", "alias": "xiaoptx" } }, { "add": { "index": "xiaop", "alias": "数据库运维工程师" } } ] }
1.8、关闭索引
1.9、打开索引
#####还有很多语句。。。。。







2260

被折叠的 条评论
为什么被折叠?



