# Elasticsearch
Elasticsearch 是一个功能强大,易于使用,高度可扩展的分布式全文检索引擎,适用于各种规模和类型的数据搜索和分析需求。
# 环境准备
在正式安装之前,查阅官方文档了解到,Elasticsearch 的安装与操作系统和JVM有关。https://www.elastic.co/cn/support/matrix/ (opens new window),根据操作系统和JVM的版本,我们选择安装合适版本的 Elasticsearch。
# 确认操作系统
# 打印系统信息
uname -a
# 查看 /etc/os-release 文件
cat /etc/os-release
# 确认 Java 版本
# 查看版本
java -version
# 或者查看 java 命令的位置
which java
# 查找命令的位置
command -v java
在大多数 Linux 系统中,/usr/bin/java 是一个指向实际 Java 可执行文件的符号链接。你可以使用 ls 命令的 -l 选项来查看这个链接指向哪里,可以帮助你确定 Java 的安装位置。
ls -l /usr/bin/java
又或者包管理器来查询已安装的 java 包
yum list installed | grep java
# 安装 Java
如果没有 java 的话,安装即可
# 搜索 java 包
yum -y list java*
# 安装 java 包
yum install -y java-1.8.0-openjdk.x86_64
# PHP 客户端
Elasticsearch 有很多客户端 https://www.elastic.co/guide/en/elasticsearch/client/index.html (opens new window),有 java,javascript,go,rust,python,php等等。由于我们的项目是 PHP 项目,另外项目的 PHP 版本是 7.3,因此确认使用 Elasticsearch 的 7.17 版本。
# 安装 Elasticsearch
经过上面环境准备,确认需要安装的是 7.17 版本,参考官方的文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.17/getting-started.html (opens new window)
# 源码安装
# 下载源码压缩包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.18-linux-x86_64.tar.gz
# 解压
tar -xzf elasticsearch-7.17.18-linux-x86_64.tar.gz
# 进入目录
cd elasticsearch-7.17.18/
# 做为守护进程启动
./bin/elasticsearch -d -p pid
启动的过程会报错:java.lang.RuntimeException: can not run elasticsearch as root
,意思就是不能使用root权限启动。
# 添加新用户
useradd user-es
# 改变目录权限
chown user-es:user-es -R elasticsearch-7.17.18
# 此处为备注信息,用户密码:useres123456
再次启动服务即可,顺便检查下服务是否正常启动
curl -X GET "localhost:9200/?pretty"
出现以下结果:
{
"name" : "iZ8vb1bgiwdylmgiy04tz8Z",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "YcorPi1rQ0iLrZILjLBDEQ",
"version" : {
"number" : "7.17.18",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "8682172c2130b9a411b1bd5ff37c9792367de6b0",
"build_date" : "2024-02-02T12:04:59.691750271Z",
"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"
}
# 服务的启动与关闭
后台启动服务
# 进入目录
cd /usr/local/src/elasticsearch-7.17.18/bin
# 启动后台服务
./bin/elasticsearch -d
关闭服务:
# 查找进程
ps -ef|grep elasticsearch
# 杀死进程
kill -9 pid
至此 Elasticsearch 已经安装完毕,同时也引出了 PHP 客户端,通过 composer 引入项目使用即可。
# 相关配置项
# 内存问题
正常启动 Elasticsearch 服务后,在宝塔首页查看内容使用率,直接飙升至 90% 。这样的话就会影响到线上的其他业务。因此还需要修改一下配置项
修改配置文件 /usr/local/src/elasticsearch-7.17.18/config/jvm.options
,注意在修改之前,比较好的实践经验是先备份一下要修改的配置文件
# 默认配置
-Xms4g
-Xmx4g
# 我们调小一些
-Xms512m
-Xmx512m
# 修改配置项
修改配置文件 /usr/local/src/elasticsearch-7.17.18/config/elasticsearch.yml
,注意在修改之前,比较好的实践经验是先备份一下要修改的配置文件
# 配置集群名字
cluster.name: yzh-plate
# 配置节点名称
node.name: yzh-plate-snapshot
# 修改绑定的ip允许远程访问
network.host: 0.0.0.0
# 配置端口号
http.port: 9200
# 配置集群主机列表
discovery.seed_hosts: ["127.0.0.1"]
# 启动时初始化的参与选主的node,生产环境必填
cluster.initial_master_nodes: ["node-1"]
# 允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
# 数据可视化
需要安装 elasticsearch-head
# 拉取项目 或者下载 zip 压缩
git clone git@github.com:mobz/elasticsearch-head.git
# 启动项目
npm run start &
# 如果提示 9100 端口已被占用,查看端口并杀死该进程,然后再重新启动
lsof -i:9100
kill -9 pid
# 后台启动
nohup npm run start &
# 执行退出操作
exit
注意:如果提示elasticsearch用户拥有的内存权限太小,至少需要262144,解决办法:
# 切换到root用户
su root
# 执行命令
vim /etc/sysctl.conf
# 添加如下配置
vm.max_map_count = 262144
# 保存退出之后,应用新的更改
sysctl -p
访问如下链接:
网页的形式查看是否启动成功 http://192.168.56.57:9200/ (opens new window)