如何实现Elasticsearch环境搭建

发布时间:2021-12-10 18:02:40 作者:柒染
来源:亿速云 阅读:274
# 如何实现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

2. 下载并安装Elasticsearch

# 下载安装包(以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/

3. 基础配置

修改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  # 单节点模式

4. 启动服务

# 前台启动(测试用)
./bin/elasticsearch

# 后台启动
./bin/elasticsearch -d -p pid

5. 验证安装

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"
}

四、集群化部署

1. 多节点配置

修改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"]

2. 节点角色规划

节点类型 配置参数 推荐数量
Master-eligible node.master: true 3(奇数)
Data node.data: true 按需扩展
Ingest node.ingest: true 2+
Coordinating node.master/data/ingest: false 2+

3. 跨机房部署建议

# 配置机架感知
cluster.routing.allocation.awareness.attributes: rack_id
node.attr.rack_id: rack1

五、安全配置

1. 启用安全功能

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

2. 生成证书

./bin/elasticsearch-certutil ca
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

3. 设置密码

./bin/elasticsearch-setup-passwords auto

六、性能调优

1. JVM配置

修改config/jvm.options

-Xms4g
-Xmx4g  # 不超过物理内存50%

2. 操作系统优化

# 增加文件描述符限制
ulimit -n 65535

# 禁用swap
sudo swapoff -a

3. 索引优化参数

PUT my_index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1,
    "refresh_interval": "30s"
  }
}

七、常见问题解决

1. 启动报错排查

2. 性能问题处理

八、监控与维护

1. 健康状态检查

GET _cluster/health
GET _nodes/stats

2. 常用维护命令

# 索引管理
DELETE old_index
PUT _template/my_template

# 节点下线
PUT _cluster/settings
{
  "transient": {
    "cluster.routing.allocation.exclude._ip": "192.168.1.101"
  }
}

九、升级策略

  1. 滚动升级(推荐):

    • 逐个节点停止服务 → 升级 → 重新加入集群
    • 确保集群状态保持green/yellow
  2. 完整集群重启

    • 适用于大版本升级(如7.x→8.x)
    • 需要关闭所有节点后统一升级

十、总结

通过本文的详细步骤,您应该已经完成: - 单节点Elasticsearch的安装与验证 - 生产级集群的规划与部署 - 基础安全配置与性能调优 - 常见问题的处理方案

建议后续结合Kibana进行可视化管理和Logstash实现数据管道,构建完整的ELK技术栈。

注意事项: 1. 生产环境务必启用认证和HTTPS 2. 定期备份快照到对象存储 3. 监控集群健康状态和资源使用情况 “`

这篇技术文档共计约2100字,采用Markdown格式编写,包含: - 多级标题结构 - 代码块和配置示例 - 表格对比数据 - 实操命令和API调用 - 注意事项和最佳实践提示

推荐阅读:
  1. Windows环境搭建ElasticSearch 5.*并配置head
  2. Docker部署ElasticSearch和ElasticSearch-Head的实现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

elasticsearch

上一篇:mlflow的搭建使用是怎样的

下一篇:如何使用百度应用引擎BAE快速搭建微信服务

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》