简称ES,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别(大数据时代)的数据。ES由 Java 语言开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTFULL API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。据国际权威的数据库产品评测机构 DB Engines 的统计,在2016 年1月,ElasticSearch 已超过 Solr 等,成为排名第一的搜索引擎类应用。

ES 适用于全文搜索、结构化搜索、分析以及将这三者混合使用 !

10、安装(CentOS7)

要求:JDK版本最低为1.8

官网地址:https://www.elastic.co/cn/

官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-6-1

# 下载
cd /root/software
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-linux-x86_64.tar.gz

# 解压命令
tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz
mv elasticsearch-7.6.1 elasticsearch7 && cd elasticsearch7
# ES目录介绍
# 1. bin:下面存放着Es启动文件         elasticsearch.bat/elasticsearch
# 2. config:配置目录
# 3. data:数据目录
# 4. jdk、lib:Java运行环境以及依赖包
# 5. logs:日志目录
# 6. modules、plugins:模块及插件目录,head插件可以存放在plugins目录下

# ES 本身其实也相当于是一个数据库,为此,我们在 elasticsearch7 文件夹下自己建一个 data 文件夹,用于存放数据
mkdir data

# 修改配置文件
cd config && vim elasticsearch.yml
-------------------------------------------
# 集群名称
cluster.name: my-application
# 数据存储路径
path.data: /root/software/elasticsearch7/data
# 日志路径
path.logs: /root/software/elasticsearch7/logs
# 配置任意主机可访问
network.host: 0.0.0.0
# 端口
http.port: 9200

cluster.initial_master_nodes: ["node-1"]

# 文件末尾添加跨域允许。具体配置流程还可以参考:https://blog.csdn.net/weixin_43019282/article/details/105352982
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
-------------------------------------------

ES 的分词器插件

# ES 自己默认带有分词器,但是支持的是英文分词,所以我们要安装一个可以对中文分词的插件
# IK 分词器 Github 地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.6.1
# 注意 :IK 分词器的版本需要严格对应ES的版本
cd /root/software
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.1/elasticsearch-analysis-ik-7.6.1.zip
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.13.2/elasticsearch-analysis-ik-7.13.2.zip

# IK分词器压缩包解压到ES 插件文件夹下
mkdir -p /root/software/elasticsearch7/plugins/ik
unzip elasticsearch-analysis-ik-7.6.1.zip -d /root/software/elasticsearch7/plugins/ik

# 查看ik配置文件,可以看出,汉字相关的分词配置都是在配置文件中一个一个的枚举出来的!
cd /root/software/elasticsearch7/plugins/ik/config
cat extra_main.dic
# 如果需要加一些额外的网络新词,可以把这些词放到 自己新建的 ext_dict.dic文件中,每个词直接都要换行,就像extra_main.doc 文件中的格式一样!
cat IKAnalyzer.cfg.xml
touch ext_dict.dic

启动与关闭ES

# ES 默认启动内存大小就要求2g,此值可配config/jvm.options中的Xms
# 进入bin目录,执行命令
./elasticsearch -d

# 关闭ES服务
ps -ef | grep elastic`
kill -9 进程id


启动问题排查

# 问题一、java版本不满足
# future versions of Elasticsearch will require Java 11; 

# 由于我们日常的代码开发都是使用的JDK1.8,所以这里不会把JAVA_HOME配置成JDK11,我们只需更改Elasticsearch的启动文件,使它指向我们下载的JDK11.
vim /software/elasticsearch7/bin/elasticsearch
-------------------------------------------------------------
export JAVA_HOME=/data/service/jdk-11.0.11
PATH=$JAVA_HOME/bin:$PATH
#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
	JAVA="/data/service/jdk-11.0.11/bin/java"
else
	JAVA=`which java`
fi
------------------------------------------------------------

https://download.oracle.com/otn/java/jdk/11.0.11+9/ab2da78f32ed489abb3ff52fd0a02b1c/jdk-11.0.11_linux-aarch64_bin.tar.gz?AuthParam=1623997273_243324e3616eee819e5d97f2ece0d622

# 问题二、不能以root用户启动
# can not run elasticsearch as root
# 新建一个用户es
adduser es
# 在/root/software 目录下赋予 elasticsearch7 这个文件夹的权限给 es 用户
chown -R es elasticsearch7
# 切换到 es 用户,并重新到 bin 目录下执行 ES服务
su es

# 问题三、当前项目所放位置不恰当
# Error: Could not find or load main class org.elasticsearch.tools.JavaVersionChecker
# 这个问题是由于当前elasticsearch是在root目录下,需要转移出去
mkdir /software
mv /root/software/elasticsearch7 /software/

# 问题四、用户拥有的内存权限太小
# ERROR: bootstrap checks failed 
# max virtual memory areas vm.max_map_count [65530] is too low,
vim /etc/sysctl.conf
# 在最后一行添加下面配置:(一个进程可以拥有的虚拟内存的数量)
vm.max_map_count=655360
# 保存后退出并执行命令
sysctl -p

# 问题五、
# bootstrap checks failed
# [2]: 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
vim /software/elasticsearch7/config/elasticsearch.yml

# 问题六、
# max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vim /etc/security/limits.conf
es soft nofile 300000
es hard nofile 300000
es soft nproc 102400
es soft memlock unlimited
es hard memlock unlimited

测试安装成功

# 访问 
http://10.10.225.117:9200/

Q.E.D.


行走在天地间自由的灵魂