很早之前买了 《Elasticsearch 核心技术与实战》,学了一半后来就没学了,现在需要用到 Elasticsearch ,发现对它竟然生疏了,所以打算重温课程,记下笔记(毕竟以后万一再忘记看视频有点浪费时间hhhh)
安装 Javs 环境
- 运行 Elasticsearch,需要安装并配置 JDK
- 设置$JAVA_HOME
- 各个版本对 Java 的依赖
- Elasticsearch 5 需要 Java 8 以上的支持
- Elasticsearch 从6.5 开始支持 Java 11
- https://www.elastic.co/cn/support/matrix#matrix_jvm
- Elasticsearch 从 7.0 以后开始,内置了 Java环境
安装 Elasticsearch
笔者下载的是二进制安装包中的 MACOS 版本
Elastic 官方网站:https://www.elastic.co/cn/
Elasticsearch 介绍页面:https://www.elastic.co/cn/elasticsearch/
Elasticsearch 下载页面:https://www.elastic.co/cn/downloads/elasticsearch
下载并解压缩 Elasticsearch

Elasticsearch 的文件目录结构
目录 | 配置文件 | 描述 |
---|---|---|
bin | 脚本文件,包括启动 Elasticsearch,安装插件。运行统计数据等 | |
config | elasticsearch.yml | 集群配置文件,user,role based 相关配置 |
JDK | Java 运行环境 | |
data | path.data | 数据文件 |
lib | Java 类库 | |
logs | 日志文件 | |
modules | 包含所有 ES 模块 | |
plugins | 包含所有已经安装的插件 |
JVM 配置
在 config 目录中有一个 Jim.options 文件,这个文件是对 Java 的 JVM虚拟机的一个默认配置
- 修改 JVM - config/jvm.options
- 7.1 下载的默认设置是 1 GB
- 配置的建议
- Xmx 和 Xms 设置成一样的
- Xmx 不要超过及其内存的 %50
- 不要超过 30 GB - https://www.elastic.co/blog/a-heap-of-trouble
启动 Elasticsearch
下载的文件解压后进入 elasticsearch-7.11.2 文件夹
启动命令:bin/elasticsearch
启动后打开浏览器输入地址 http://localhost:9200
{
name: "MacBook-Pro.local",
cluster_name: "elasticsearch",
cluster_uuid: "zAbdIdRIRnSyfrwG-5Zcyg",
version: {
number: "7.11.2",
build_flavor: "default",
build_type: "tar",
build_hash: "3e5a16cfec50876d20ea77b075070932c6464c7d",
build_date: "2021-03-06T05:54:38.141101Z",
build_snapshot: false,
lucene_version: "8.7.0",
minimum_wire_compatibility_version: "6.8.0",
minimum_index_compatibility_version: "6.0.0-beta1"
},
tagline: "You Know, for Search"
}
安装 Elasticsearch 插件
查看当前已经安装的插件
bin/elasticsearch-plugin list
安装指定插件,这里安装 analysis-icu 分词插件
bin/elasticsearch-plugin install analysis-icu
输出:
-> Installing analysis-icu
-> Downloading analysis-icu from elastic
[=================================================] 100%
-> Installed analysis-icu
尝试再次使用查看插件的命令
bin/elasticsearch-plugin list
输出:
analysis-icu
使用 restful api 查看所有插件
# 启动 elasticsearch
bin/elasticsearch
# 打开浏览器输入地址 http://localhost:9200/_cat/plugins
输出:
MacBook-Pro.local analysis-icu 7.11.2
Elasticsearch 提供插件的机制对系统进行扩展
Discovery Plugin、 Analysis Plugin、Security Plugin、Management Plugin、Ingest Plugin、Mapper Plugin、Backup Plugin
单机实现多实例
bin/elasticsearch -E node.name=node1 -E cluster.name=esstudy -E path.data=node1_data -d
bin/elasticsearch -E node.name=node2 -E cluster.name=esstudy -E path.data=node2_data -d
bin/elasticsearch -E node.name=node1 -E cluster.name=esstudy -E path.data=node3_data -d
删除进程
ps | grep elasticsearch
kill pid
查看当前所有节点,打开浏览器输入地址 http://localhost:9200/_cat/nodes
当前已经有3个节点
127.0.0.1 35 99 29 3.99 cdhilmrstw - node2
127.0.0.1 24 99 31 3.99 cdhilmrstw * node1
127.0.0.1 31 99 26 3.99 cdhilmrstw - node1
插曲:使用 Elasticsearch 默认自带的 SDK
因为我本级配置的有 Jdk 8,所以使用 Elasticsearch 会有如下警告
Future versions of Elasticsearch will require Java 11; your Java version from [/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
这里参考:https://www.cnblogs.com/sanduzxcvbnm/p/11976046.html
疑问解答
-
问:为什么在一台机器上启动多节点的时候不需要指定不同的端口?
答:没有绑定host的ip时,采取的是dev mode启动,会在一定的范围内分配端口