Elasticsearch version 8.3.2

Elasticsearch 摘要

ES:是一个基于Lucene库的搜索引擎,并提供了分布式以及多用户的全局搜索引擎,具有Web API和无模式接口文档。
相较于ES-7版本的区别:
1、默认开启了安全配置,并极大简化了开启安全的工作量,7.x需要配置CA证书、证书签发、yml添加配置等多个步骤,8.x只需要一步即可
2、存储空间优化:更新了倒排索引,对倒排文件使用新的编码集,对于keyword、macth_only_text、text类型字段有效。
3、对于ES内置索引的保护增强了:elastic用户默认只能读,如果需要写权限,需要有allow_restrict_acces权限

运行条件:需要使用JAVA 17才能够运行(不过ES8中内嵌了jdk)
Elasticsearch 8.3.2安装包获取请点我

获取安装包

1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.3.2-linux-x86_64.tar.gz

解压

1
tar -zxf  elasticsearch-8.3.2-linux-x86_64.tar.gz -C /usr/local/elasticsearch

预环境准备

1
2
配置内核参数 /etc/sysctl.conf
配置文件描述符打开的数量/etc/security/limits.conf

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cluster.name: hxt-elk-cls  # 当前elasticsearch集群的名称
node.name: node-1 # 当前节点的名称
path.data: /data/elasticsearch/data # elasticsearch 数据存储路径
path.logs: /data/elasticsearch/logs # elasticsearch 日志存储路径
bootstrap.memory_lock: true #
\# 由于jvm开始swap交换时会导致es的搜索效率降低,所以尽量保证不进行内存交换;该项就是为了避免发生内存交换而存在的。(值为false时:不进行内存锁定,即可发生内存交换;值为true时:会锁定内存)
network.host: 0.0.0.0 # ES监听的地址;默认:0.0.0.0
http.port: 9200 # ES服务端口
discovery.seed_hosts: ["172.x.x.x:9300", "172.x.x.x:9300"] # ES启动时发现的主机列表
cluster.initial_master_nodes: ["node-1"] # 将哪个节点初始化为集群的主节点
### 以下配置需自己添加
xpack.security.enabled: true # 是否开启ES的安全认证
xpack.security.transport.ssl.enabled: true # 是否开启ES的加密传输
xpack.security.transport.ssl.verification_mode: certificate # 认证方式
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
ingest.geoip.downloader.enabled: false # 该配置是禁用ES在启动时更新一些地图的数据库,不会影响ES启动。
证书生成步骤: 根证书生成:./elasticsearch-certutil ca 可以不设置密码,直接回车即可。执行成功后输出文件名为"elastic-stack-ca.p12"的根证书文件 生成服务证书:./elasticsearch-certutil cert --ca elastic-stack-ca.p12 执行成功后对应目录下会有一个"elastic-certificates.p12"的证书文件 将上述生成的两个证书文件放到"ES_PATH/config/certs"路径下即可。

管理服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
systemctl edit elasticsearch.service --full --force
[Unit]
Description=elasticsearch server # 服务的描述
After=network.target # 表明需要依赖的服务,决定启动顺序
[Service]
Type=simple # 以fork方式从父进程创建紫禁城,创建后父进程会立即退出,子进程将成为主进程
User=elastic # 以该用户启动次服务
Group=elastic # 用户对应的组
LimitNOFILE=100000 # 限制该服务最高能打开的文件描述符数量
LimitNPROC=100000 # 限制继承的最大数量
LimitMEMLOCK=infinity # 内存锁定限制,(inifinity不会限制)
Restart=no # 是否重启
ExecStart=/usr/local/elasticsearch/bin/elasticsearch # 启动当前服务的命令
PrivateTmp=true # 服务启动时会在tmp目录下生成类似systemd-private的文件夹,用于存放该服务的临时文件
[Install]
WantedBy=multi-user.target

查看集群状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
curl -XGET -u USER:PASSWD http://localhost:9200/_cluster/health?pretty
{
"cluster_name" : "CLUSTER_NAME",
"status" : "yellow", #正常情况下为:green;主分片可用,部分副分片不可用:yellow;主分片不可用:red
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 295,
"active_shards" : 576,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 14,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 97.6271186440678
}