ElasticSearch 是一个基于 Lucene 的分布式全文搜索引擎,广泛应用于日志分析、实时数据处理、复杂查询等场景。本文将详细介绍 ElasticSearch 的安装配置过程,并针对常见问题提供解决方案。
ElasticSearch 基于 Java 开发,因此需要先安装 JDK(建议使用 JDK 11 或更高版本)。
访问 Elastic 官方网站,下载适合的版本(如 Elasticsearch-8.x.zip 或 .tar.gz 格式)。
C:\elasticsearch-8.x
。bin\elasticsearch.bat
启动服务。http://localhost:9200
检查是否成功启动。tar -xzf elasticsearch-8.x.tar.gz
./bin/elasticsearch
http://localhost:9200
验证。ElasticSearch 的核心配置文件位于 config
目录下,主要包括以下几个文件:
elasticsearch.yml
这是 ElasticSearch 的主要配置文件,用于定义集群名称、节点角色、网络绑定地址等参数。
# 设置集群名称
cluster.name: my-cluster
# 设置节点名称
node.name: node-1
# 绑定的网络地址
network.host: 0.0.0.0
# HTTP 接口监听端口
http.port: 9200
# 数据和日志存储路径
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
# 集群发现设置
discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node-1", "node-2"]
jvm.options
该文件用于调整 JVM 参数,以优化性能和内存分配。默认情况下,ElasticSearch 会自动分配内存,但可以根据需求手动修改。
-Xms4g # 设置 JVM 最小堆内存为 4GB
-Xmx4g # 设置 JVM 最大堆内存为 4GB
日志文件位于 logs
目录下,默认使用 Log4j2 框架。可以通过修改 log4j2.properties
文件调整日志级别。
max virtual memory areas vm.max_map_count [65530] is too low
原因:Linux 系统默认虚拟内存区域限制较低,导致 ElasticSearch 启动失败。
解决方法:
sudo sysctl -w vm.max_map_count=262144
若希望永久生效,可将上述命令添加到 /etc/sysctl.conf
文件中。
yellow
原因:部分分片未分配,通常是因为副本分片未找到其他节点。
解决方法:
GET /_cat/health?v
PUT /_all/_settings
{
"index.number_of_replicas": 0
}
原因:JVM 堆内存设置不合理或物理内存不足。
解决方法:
原因:ElasticSearch 默认开启安全功能(如 X-Pack),未正确配置用户名密码。
解决方法:
./bin/elasticsearch-setup-passwords interactive
curl -u elastic:password http://localhost:9200
合理设置分片数量可以提升查询效率,但过多分片会增加管理开销。一般建议每个索引分片大小控制在 10GB 左右。
*
和 ?
),尽量使用精确匹配。