想象一下你正在开发一个电商网站,商品数量已经突破百万级别,用户抱怨搜索"男士运动鞋"要等5秒才能出结果,运营团队说他们需要实时查看销售数据做促销活动,而你的MySQL数据库已经不堪重负...
这时候就该Elasticsearch登场了!这个基于Lucene的搜索引擎能以毫秒级速度处理海量数据,支持全文检索、结构化查询和分析,今天我就手把手教你在Linux系统上安装和配置Elasticsearch,让你也能拥有像淘宝、京东那样的搜索体验。
在开始之前,我们需要确保系统满足基本要求:
打开终端,先检查是否已安装Java:
java -version
如果显示"command not found"或版本低于17,就需要安装:
sudo apt update sudo apt install openjdk-17-jdk
安装完成后再次验证:
java -version
应该能看到类似这样的输出:
openjdk version "17.0.8" 2025-07-18
OpenJDK Runtime Environment (build 17.0.8+7-Ubuntu-0ubuntu122.04)
OpenJDK 64-Bit Server VM (build 17.0.8+7-Ubuntu-0ubuntu122.04, mixed mode, sharing)
这是最简单的安装方式,适合大多数用户:
导入Elasticsearch GPG密钥:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
添加APT仓库:
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
更新软件包索引并安装:
sudo apt update sudo apt install elasticsearch
如果无法使用APT仓库,也可以手动下载安装:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.0-amd64.deb sudo dpkg -i elasticsearch-8.12.0-amd64.deb
安装完成后,我们需要进行一些基本配置:
打开配置文件:
sudo nano /etc/elasticsearch/elasticsearch.yml
修改以下关键配置(根据你的需求调整):
# 集群名称,同一集群内的节点名称必须相同 cluster.name: my-elasticsearch-cluster # 节点名称,每个节点应该不同 node.name: node-1 # 数据存储路径 path.data: /var/lib/elasticsearch # 日志存储路径 path.logs: /var/log/elasticsearch # 绑定地址,0.0.0.0表示监听所有网络接口 network.host: 0.0.0.0 # HTTP端口 http.port: 9200 # 初始主节点列表 cluster.initial_master_nodes: ["node-1"]
调整JVM堆内存大小(根据服务器内存调整):
sudo nano /etc/elasticsearch/jvm.options
找到并修改以下行(建议不超过物理内存的50%):
-Xms2g
-Xmx2g
配置完成后,启动服务并设置开机自启:
sudo systemctl daemon-reload sudo systemctl enable elasticsearch sudo systemctl start elasticsearch
检查服务状态:
sudo systemctl status elasticsearch
如果一切正常,你应该能看到"active (running)"的状态。
让我们测试一下Elasticsearch是否正常运行:
curl -X GET "localhost:9200/"
如果安装成功,你会看到类似这样的JSON响应:
{ "name" : "node-1", "cluster_name" : "my-elasticsearch-cluster", "cluster_uuid" : "abcdefgh-1234-5678-ijkl-mnopqrstuvwx", "version" : { "number" : "8.12.0", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "abcdef1234567890", "build_date" : "2025-07-15T12:34:56.789Z", "build_snapshot" : false, "lucene_version" : "9.8.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" }
Elasticsearch 8.x默认启用了安全功能,我们需要设置密码:
重置elastic用户密码:
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
按照提示输入新密码并记住它。
测试带认证的请求:
curl -u elastic:你的密码 -X GET "localhost:9200/"
解决方法:
sudo sysctl -w vm.max_map_count=262144
要使此设置永久生效,编辑/etc/sysctl.conf文件:
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
检查防火墙设置:
sudo ufw allow 9200
或者如果你使用的是firewalld:
sudo firewall-cmd --add-port=9200/tcp --permanent sudo firewall-cmd --reload
如果服务器内存较小,可以降低JVM堆大小:
编辑/etc/elasticsearch/jvm.options:
-Xms1g
-Xmx1g
然后重启服务:
sudo systemctl restart elasticsearch
现在你已经成功安装并运行了Elasticsearch,接下来可以:
这只是开始!Elasticsearch功能强大但也复杂,建议从简单用例开始逐步深入。
本文由 怀刚洁 于2025-07-30发表在【云服务器提供商】,文中图片由(怀刚洁)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/486010.html
发表评论