# 如何实现Elasticsearch环境搭建 ## 一、Elasticsearch简介 Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,由Shay Banon于2010年创建。作为ELK技术栈的核心组件,它具有以下特性: - **近实时搜索**:数据索引后1秒内可检索 - **分布式架构**:支持水平扩展和高可用 - **RESTful API**:通过HTTP接口进行操作 - **多租户支持**:通过索引机制实现数据隔离 - **丰富的查询DSL**:支持全文检索、结构化查询等 ## 二、环境准备 ### 1. 硬件要求 | 资源类型 | 生产环境建议 | 测试环境最低 | |----------|--------------|--------------| | CPU | 8核+ | 2核 | | 内存 | 16GB+ | 4GB | | 存储 | SSD/NVMe | 普通硬盘 | ### 2. 软件要求 - **操作系统**:Linux/Windows/macOS(推荐Linux) - **Java环境**:JDK 8或11(LTS版本) - **版本选择**:建议使用最新稳定版(本文以8.x为例) ## 三、单节点安装部署 ### 1. 安装Java环境 ```bash # Ubuntu/Debian sudo apt update sudo apt install openjdk-11-jdk # 验证安装 java -version
# 下载安装包(以Linux为例) wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.1-linux-x86_64.tar.gz # 解压安装 tar -xzf elasticsearch-8.4.1-linux-x86_64.tar.gz cd elasticsearch-8.4.1/
修改config/elasticsearch.yml
:
cluster.name: my-es-cluster node.name: node-1 path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node # 单节点模式
# 前台启动(测试用) ./bin/elasticsearch # 后台启动 ./bin/elasticsearch -d -p pid
curl -X GET "localhost:9200/"
预期返回:
{ "name" : "node-1", "cluster_name" : "my-es-cluster", "version" : { "number" : "8.4.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "2bd229c8e56650b42e40992322a76e7914258f0c", "build_date" : "2022-09-23T17:33:31.471153Z", "build_snapshot" : false, "lucene_version" : "9.3.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" }
修改config/elasticsearch.yml
:
# 节点1配置 cluster.name: my-es-cluster node.name: node-1 network.host: 192.168.1.101 discovery.seed_hosts: ["192.168.1.101", "192.168.1.102"] cluster.initial_master_nodes: ["node-1", "node-2"] # 节点2配置 cluster.name: my-es-cluster node.name: node-2 network.host: 192.168.1.102 discovery.seed_hosts: ["192.168.1.101", "192.168.1.102"] cluster.initial_master_nodes: ["node-1", "node-2"]
节点类型 | 配置参数 | 推荐数量 |
---|---|---|
Master-eligible | node.master: true | 3(奇数) |
Data | node.data: true | 按需扩展 |
Ingest | node.ingest: true | 2+ |
Coordinating | node.master/data/ingest: false | 2+ |
# 配置机架感知 cluster.routing.allocation.awareness.attributes: rack_id node.attr.rack_id: rack1
xpack.security.enabled: true xpack.security.transport.ssl.enabled: true
./bin/elasticsearch-certutil ca ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
./bin/elasticsearch-setup-passwords auto
修改config/jvm.options
:
-Xms4g -Xmx4g # 不超过物理内存50%
# 增加文件描述符限制 ulimit -n 65535 # 禁用swap sudo swapoff -a
PUT my_index { "settings": { "number_of_shards": 3, "number_of_replicas": 1, "refresh_interval": "30s" } }
/etc/security/limits.conf
sysctl -w vm.max_map_count=262144
jdk-11
或更高LTS版本GET _cluster/health GET _nodes/stats
# 索引管理 DELETE old_index PUT _template/my_template # 节点下线 PUT _cluster/settings { "transient": { "cluster.routing.allocation.exclude._ip": "192.168.1.101" } }
滚动升级(推荐):
完整集群重启:
通过本文的详细步骤,您应该已经完成: - 单节点Elasticsearch的安装与验证 - 生产级集群的规划与部署 - 基础安全配置与性能调优 - 常见问题的处理方案
建议后续结合Kibana进行可视化管理和Logstash实现数据管道,构建完整的ELK技术栈。
注意事项: 1. 生产环境务必启用认证和HTTPS 2. 定期备份快照到对象存储 3. 监控集群健康状态和资源使用情况 “`
这篇技术文档共计约2100字,采用Markdown格式编写,包含: - 多级标题结构 - 代码块和配置示例 - 表格对比数据 - 实操命令和API调用 - 注意事项和最佳实践提示
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。