一、ElasticSearch安装前准备

1.1 版本选择与环境要求

对于初学者,建议直接从Windows版本开始学习。ElasticSearch从7.x版本开始内置了Java环境,无需单独安装JDK,降低了入门门槛。

官方安装文档https://www.elastic.co/guide/en/elasticsearch/reference/8.14/install-elasticsearch.html

硬件要求

  • 内存:建议4G以上,JVM分配1G以上内存

  • 磁盘空间:至少预留5GB可用空间

  • 操作系统:Windows 10/11、Linux各主流发行版

1.2 ElasticSearch目录结构解析

下载解压后,ElasticSearch的目录结构如下:

目录说明
bin/脚本文件,包括启动elasticsearch、安装插件、运行统计数据等
config/配置文件目录,如elasticsearch配置、角色配置、JVM配置等
jdk/7.x以后特有,自带的Java环境
data/默认的数据存放目录,包含节点、分片、索引、文档的所有数据
lib/elasticsearch依赖的Java类库
logs/默认的日志文件存储路径
modules/包含所有的Elasticsearch模块,如Cluster、Discovery、Indices等
plugins/已安装插件目录

二、Windows平台安装ElasticSearch

2.1 下载与解压

下载地址https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-windows-x86_64.zip

下载完成后,将压缩包解压到合适目录,如:D:\elasticsearch-8.14.3

2.2 配置JDK环境变量(可选)

ElasticSearch 7.x+版本已内置JDK,但可以通过环境变量指定使用自定义JDK:

环境变量优先级ES_JAVA_HOME > ES_HOME > 内置JDK

  • ES_JAVA_HOME:指定ElasticSearch使用的Java运行时环境路径

  • ES_HOME:指定ElasticSearch的安装路径

Windows设置环境变量

  1. 右键"此电脑" → 属性 → 高级系统设置 → 环境变量

  2. 新建系统变量:

    ES_JAVA_HOME = D:\java\jdk-17
    ES_HOME = D:\elasticsearch-8.14.3

2.3 配置文件调整

编辑config/elasticsearch.yml文件,进行以下配置:

yaml

# 关闭安全认证(初学者建议关闭)
xpack.security.enabled: false

# 配置集群名称
cluster.name: my-elasticsearch

# 配置节点名称
node.name: node-1

# 配置数据存储路径(默认在ES_HOME/data)
path.data: D:\elasticsearch-data\data

# 配置日志存储路径
path.logs: D:\elasticsearch-data\logs

# 配置网络访问
network.host: 0.0.0.0
http.port: 9200

# 开发模式配置(绕过引导检查)
discovery.type: single-node

2.4 解决中文乱码问题

编辑config/jvm.options文件,在文件末尾添加:

-Dfile.encoding=GBK

2.5 启动ElasticSearch服务

进入bin目录,双击elasticsearch.bat启动服务。

端口说明

  • 9300端口:Elasticsearch集群间组件通信端口

  • 9200端口:HTTP协议RESTful端口,浏览器访问端口

验证启动成功
打开浏览器,访问:http://localhost:9200

如果看到类似以下JSON响应,说明启动成功:

json

{
  "name": "node-1",
  "cluster_name": "my-elasticsearch",
  "cluster_uuid": "xxxxx",
  "version": {
    "number": "8.14.3",
    "build_flavor": "default",
    "build_type": "zip",
    "build_hash": "xxxxx",
    "build_date": "2024-xx-xx",
    "build_snapshot": false,
    "lucene_version": "9.10.0",
    "minimum_wire_compatibility_version": "7.17.0",
    "minimum_index_compatibility_version": "7.0.0"
  },
  "tagline": "You Know, for Search"
}

三、Linux平台安装ElasticSearch

3.1 环境准备

系统信息

  • 操作系统:CentOS 7

  • IP地址:192.168.65.47

  • 操作用户:fox

重要提醒:ElasticSearch不允许使用root账号启动服务!

3.2 创建专用用户

bash

# 切换到root用户
su root

# 创建fox用户
adduser fox
passwd fox

# 为用户授予sudo权限(可选)
usermod -aG wheel fox

3.3 下载与解压

切换到fox用户,下载并解压ElasticSearch:

bash

# 切换到fox用户
su fox
cd /home/fox

# 下载ElasticSearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-linux-x86_64.tar.gz

# 解压
tar -xzf elasticsearch-8.14.3-linux-x86_64.tar.gz
cd elasticsearch-8.14.3/

如果在root用户下解压

bash

# 修改文件所有者
chown -R fox:fox elasticsearch-8.14.3

3.4 配置环境变量(可选)

编辑用户环境变量配置文件:

bash

vim ~/.bash_profile

# 添加以下内容
export ES_JAVA_HOME=/home/fox/elasticsearch-8.14.3/jdk/
export ES_HOME=/home/fox/elasticsearch-8.14.3
export PATH=$PATH:$ES_HOME/bin

# 使配置生效
source ~/.bash_profile

3.5 配置文件调整

编辑config/elasticsearch.yml

yaml

# 节点名称
node.name: node-1

# 集群名称
cluster.name: my-cluster

# 数据存储路径
path.data: /home/fox/elasticsearch-data/data

# 日志存储路径
path.logs: /home/fox/elasticsearch-data/logs

# 网络配置
network.host: 0.0.0.0
http.port: 9200

# 单节点模式(开发模式,绕过引导检查)
discovery.type: single-node

# 关闭安全认证(初学者建议关闭)
xpack.security.enabled: false

3.6 JVM参数配置

编辑config/jvm.options,调整堆内存大小:

properties

# 最小堆内存
-Xms4g
# 最大堆内存
-Xmx4g

JVM配置建议

  1. Xms和Xmx设置成相同值,避免运行时调整

  2. Xmx不要超过机器内存的50%

  3. 不要超过30GB(JVM性能考虑)

3.7 启动ElasticSearch

bash

# 前台启动
bin/elasticsearch

# 后台启动
bin/elasticsearch -d

# 查看进程
ps -ef | grep elasticsearch

验证启动
浏览器访问:http://192.168.65.47:9200

四、开发模式与生产模式详解

4.1 开发模式

特点

  • 默认配置(未配置集群发现设置)

  • 适合学习和开发环境

  • 可通过discovery.type: single-node绕过引导检查

配置示例

yaml

discovery.type: single-node

4.2 生产模式

特点

  • 修改集群相关配置后触发

  • 启动时进行引导检查(bootstrap checks)

  • 检查项包括:JVM大小、内存锁、虚拟内存、最大线程数等

引导检查目的

  • 防止用户在不了解ES的情况下启动服务

  • 避免后期性能问题难以解决

  • 确保集群稳定性和可维护性

生产模式必填配置

yaml

# 集群发现种子主机列表
discovery.seed_hosts: ["host1", "host2"]

# 初始主节点列表
cluster.initial_master_nodes: ["node-1", "node-2"]

五、生产模式常见错误及解决方案

5.1 文件描述符限制错误

错误信息

text

max file descriptors [4096] for elasticsearch process is too low, 
increase to at least [65536]

解决方案

bash

# 切换到root用户
sudo su

# 编辑limits.conf
vim /etc/security/limits.conf

# 添加以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

# 重启系统或重新登录用户

5.2 线程数限制错误

错误信息

text

max number of threads [1024] for user [es] is too low, 
increase to at least [4096]

解决方案

bash

vim /etc/security/limits.d/20-nproc.conf

# 修改为
* soft nproc 4096

5.3 虚拟内存限制错误

错误信息

max virtual memory areas vm.max_map_count [65530] is too low, 
increase to at least [262144]

解决方案

bash

vim /etc/sysctl.conf

# 添加
vm.max_map_count=262144

# 使配置生效
sysctl -p

5.4 集群发现配置错误

错误信息

the default discovery settings are unsuitable for production use; 
at least one of [discovery.seed_hosts, discovery.seed_providers, 
cluster.initial_master_nodes] must be configured

解决方案

yaml

# 方法1:配置集群发现
discovery.seed_hosts: ["192.168.1.1", "192.168.1.2"]
cluster.initial_master_nodes: ["node-1", "node-2"]

# 方法2:设置为单节点模式(仅开发环境)
discovery.type: single-node

六、ElasticSearch常用配置参数详解

参数说明默认值生产建议
cluster.name集群名称elasticsearch根据用途修改,不同环境使用不同名称
node.name节点名称主机名明确指定,便于识别
path.data数据存储目录ES_HOME/data部署到独立目录,防止升级误删
path.logs日志存储目录ES_HOME/logs部署到独立目录
bootstrap.memory_lock内存锁定检查true生产环境建议true,非生产可设为false
network.host网络绑定地址127.0.0.1根据网络环境配置
http.portHTTP服务端口9200保持默认或根据需求修改
transport.port节点通信端口9300保持默认
discovery.seed_hosts集群发现主机列表[]生产环境必填
cluster.initial_master_nodes初始主节点列表[]首次构建集群时必填

七、ElasticSearch浏览器插件安装

7.1 常用插件推荐

插件名称图标功能下载地址
Elasticsearch Headhttps://image查看集群节点数据,管理索引和分片GitHub
Elasticsearch Toolshttps://image查看节点资源占用,执行查询语句Edge商店
Elasticvuehttps://image功能强大,对国人友好官方网站

7.2 Elasticvue界面展示

Elasticvue提供直观的集群管理界面,支持:

  • 集群状态监控

  • 索引管理

  • 查询执行

  • 数据可视化

八、Kibana可视化平台安装

8.1 下载与解压

下载地址https://www.elastic.co/cn/downloads/past-releases#kibana

Linux下载

bash

wget https://artifacts.elastic.co/downloads/kibana/kibana-8.14.3-linux-x86_64.tar.gz
tar -zxvf kibana-8.14.3-linux-x86_64.tar.gz
cd kibana-8.14.3

8.2 配置文件调整

编辑config/kibana.yml

yaml

# Kibana服务端口
server.port: 5601

# 绑定地址(允许远程访问)
server.host: "0.0.0.0"

# ElasticSearch连接地址
elasticsearch.hosts: ["http://localhost:9200"]

# 界面语言设置为中文
i18n.locale: "zh-CN"

8.3 启动Kibana

Linux启动

bash

# 前台启动
bin/kibana

# 后台启动
nohup bin/kibana > logs/kibana.log 2>&1 &

# 检查端口
netstat -tunlp | grep 5601

Windows启动:直接执行bin\kibana.bat

访问Kibanahttp://localhost:5601

8.4 常用_cat API

Kibana的Dev Tools控制台支持以下常用_cat API:

bash

# 查看集群整体情况
GET /_cat/allocation

# 查看节点信息
GET /_cat/nodes

# 查看所有索引
GET /_cat/indices

# 查看集群健康状态
GET /_cat/health

# 查看分片信息
GET /_cat/shards

# 查看主节点信息
GET /_cat/master

# 查看文档数量
GET /_cat/count

九、中文分词插件安装与配置

9.1 在线安装分词插件

安装analysis-icu插件

bash

# 查看已安装插件
bin/elasticsearch-plugin list

# 安装icu插件
bin/elasticsearch-plugin install analysis-icu

# 删除插件
bin/elasticsearch-plugin remove analysis-icu

# 重启ES生效

icu插件功能

  • 基于ICU库提供高级文本分析

  • 支持多语言和复杂Unicode文本处理

  • 包含ICU分词器和标准化过滤器

测试分词效果

json

POST _analyze
{
  "analyzer": "icu_analyzer",
  "text": "中华人民共和国"
}

9.2 离线安装IK分词器

下载地址

版本匹配:IK分词器版本必须与ES版本严格对应!

安装步骤

  1. 下载对应版本的IK分词器插件

  2. 解压到plugins目录

  3. 重启ElasticSearch服务

9.3 IK分词器使用

三种分词模式对比

json

# 1. ES默认分词器(单字拆分)
POST _analyze
{
  "analyzer": "standard",
  "text": "中华人民共和国"
}
# 结果:["中","华","人","民","共","和","国"]

# 2. ik_smart(最粗粒度拆分)
POST _analyze
{
  "analyzer": "ik_smart",
  "text": "中华人民共和国"
}
# 结果:["中华人民共和国"]

# 3. ik_max_word(最细粒度拆分)
POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "中华人民共和国"
}
# 结果:["中华人民共和国","中华人民","中华","华人","人民","共和国","共和","国"]

9.4 索引级别分词器配置

创建索引时指定默认分词器

json

PUT /employee
{
  "settings": {
    "index": {
      "analysis.analyzer.default.type": "ik_max_word"
    }
  }
}

9.5 字段级别分词器配置

创建索引并指定字段分词器

json

# 创建索引
PUT /index

# 配置字段映射
POST /index/_mapping
{
  "properties": {
    "content": {
      "type": "text",
      "analyzer": "ik_max_word",
      "search_analyzer": "ik_smart"
    }
  }
}

映射属性解释

  • type: "text":字段类型为文本,支持全文搜索

  • analyzer: "ik_max_word":索引时使用最细粒度分词,提高召回率

  • search_analyzer: "ik_smart":搜索时使用智能分词,提高准确率

插入测试数据

json

POST /index/_create/1
{"content": "美国留给伊拉克的是个烂摊子吗"}

POST /index/_create/2
{"content": "公安部:各地校车将享最高路权"}

POST /index/_create/3
{"content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}

POST /index/_create/4
{"content": "中国驻洛杉矶领事馆遭亚裔男子枪击嫌犯已自首"}

带高亮的查询示例

json

POST /index/_search
{
  "query": {
    "match": {
      "content": "中国"
    }
  },
  "highlight": {
    "pre_tags": ["<em>"],
    "post_tags": ["</em>"],
    "fields": {
      "content": {}
    }
  }
}

十、总结与最佳实践

10.1 安装流程总结

  1. 环境准备:确保内存和磁盘空间充足

  2. 用户创建:Linux下创建非root用户

  3. 下载解压:获取对应版本的ElasticSearch

  4. 配置调整:根据环境修改elasticsearch.yml

  5. JVM调优:合理设置堆内存大小

  6. 服务启动:注意开发模式与生产模式区别

  7. 插件安装:根据需要安装分词器等插件

  8. Kibana集成:安装可视化管理平台

10.2 环境区分建议

环境配置建议注意事项
开发环境discovery.type: single-node
xpack.security.enabled: false
简化配置,快速启动
测试环境最小集群配置
基础安全配置
模拟生产环境
生产环境完整集群配置
严格安全配置
资源隔离
性能优化,高可用

10.3 故障排查清单

  1. 无法启动:检查JVM参数、文件权限、端口占用

  2. 节点无法加入集群:检查网络、集群名称、发现配置

  3. 内存不足:调整JVM堆大小,检查系统内存

  4. 磁盘空间不足:清理旧索引,扩容磁盘

  5. 查询性能慢:优化索引设计,调整分片数

10.4 后续学习建议

  1. 掌握基本操作:索引创建、文档CRUD、搜索查询

  2. 理解核心概念:分片、副本、映射、分析器

  3. 学习DSL语法:掌握复杂查询和聚合分析

  4. 探索高级特性:集群监控、性能调优、安全配置

  5. 集成实践:与Spring Boot等框架集成开发

资源链接

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐