每一个你不满意的现在,都有一个你不努力的曾经。

Elasticsearch——安装搭建单机版


版本信息

Product Version:    7.9
Operating System:   Linux - Generic
OS Version:         Linux - Generic (glibc 2.12) (x86, 64-bit)

以下为 Elasticsearch 目录及主要配置文件介绍

目录|文件   描述
bin/    二进制脚本包含启动节点的elasticsearch
    |-- elasticsearch   elasticsearch的启动命令,Linux下加”-d”参数以服务的形式后台运行。
    |-- …   
config/ 配置文件目录(elasticsearch、log、jvm、role、user)
    |-- elasticsearch.yml   配置文件中可进行端口、是否允许外部访问、端口等的设置。
    |-- jvm.options jvm 配置文件
    |-- log4j2.properties   日志配置文件
    |-- …   
data/   在节点上申请的每个index/shard的数据文件的位置,可容纳多个位置
jdk/    jdk包(7.0版本以后自带jdk环境,如果已经配置了jdk,会优先使用外部 jdk 环境)
lib/    引用的相关类库的存放目录,elasticsearch.jar本身也放于该目录
logs/   日志文件位置
modules/    功能模块的存放目录,如aggs、reindex、geoip、xpack、eval。。。
plugins/    插件文件位置。每个插件将包含在一个子目录中
README.asciidoc readme文档
LICENSE.txt 证书
NOTICE.txt  通知

注意事项:

es依赖jdk环境,7.0以后的es压缩包中自带有jdk。

若已提前安装了jdk环境,则es启动时,会优先找linux中的jdk。若此时jdk的版本不一致,就会造成jdk不能正常运行。

若Linux服务本来没有配置jdk,则会直接使用es目录下默认的jdk,反而不会报错。

1.下载相应版本

https://www.elastic.co/cn/downloads/past-releases#elasticsearch
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-17-7

[root@localhost ~]# cd /opt
[root@localhost opt]# mkdir packages
[root@localhost opt]# cd packages
[root@localhost packages]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz

2.解压创建相关用户

[root@localhost packages]# tar -zxvf elasticsearch-7.17.7-linux-x86_64.tar.gz
[root@localhost packages]# mv elasticsearch-7.17.7 /usr/local
[root@localhost packages]# useradd elk
[root@localhost packages]# chown -R elk.elk /usr/local/elasticsearch-7.17.7

3.修改配置

[root@localhost packages]# cd /usr/local/elasticsearch-7.17.7
[root@localhost elasticsearch-7.17.7]# vim config/elasticsearch.yml

将 network.host 配置项的值改为 0.0.0.0
network.host: 0.0.0.0

4.启动elasticsearch

使用之前创建好的用户启动 elasticsearch
[root@localhost elasticsearch-7.17.7]# su elk

[elk@localhost elasticsearch-7.17.7]$ ./bin/elasticsearch

启动是出现了4个error
ERROR: [4] bootstrap checks failed. You must address the points described in the following [4] lines before starting Elasticsearch.
bootstrap check failure [1] of [4]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
bootstrap check failure [2] of [4]: max number of threads [3766] for user [elk] is too low, increase to at least [4096]
bootstrap check failure [3] of [4]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
bootstrap check failure [4] of [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
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/elasticsearch-7.17.7/logs/elasticsearch.log

上面出现了4条 ERROR 提示我们逐步解决:

1.弹性搜索过程的最大文件为 [4096] 太少,至少增加到 [65535];
2.用户 [elk] 的最大线程数 [3766] 太少,至少增加到 [4096];
3.最大虚拟内存区域 vm.max_map_count[65530] 过低,至少增加到[262144];
4.开放 Elasticsearch 的远程访问,Elasticsearch 就认为当前环境是生产环境,要求配置参与集群选主的节点列表。

解决第一、二个 ERROR,调整进程打开的文件数上限和 elk 这个 user 可以创建的线程数上限,* 代表所有用户。
[root@localhost elasticsearch-7.17.7]# vim /etc/security/limits.conf 

添加以下配置:
#增加下面这2行是为了实现 elasticsearch 允许远程访问,允许进程打开的最大文件数。
elk               soft    nofile          65535
elk               hard    nofile          65535
#增加下面这2行是为了实现 elasticsearch 允许远程访问,允许进程打开的最大线程数。
elk               soft    nproc           4096
elk               hard    nproc           4096

解决第三个 ERROR;将虚拟内存调大

[root@localhost elasticsearch-7.17.7]# vim /etc/sysctl.conf 

#elasticsearch允许远程访问时,必须配置该项,默认的65530太小。
vm.max_map_count=262144

重新加载配置文件,让配置生效:
[root@localhost elasticsearch-7.17.7]# sysctl -p
vm.max_map_count = 262144

解决第4个 ERROR
添加以下配置项,将运行模式指定为单节点模式,
discovery.type: single-node
或者
discovery.seed_hosts : 127.0.0.1

解决完后加 -d 参数后台运行:

[elk@localhost elasticsearch-7.17.7]$ ./bin/elasticsearch -d

curl 一下ip端口
[root@localhost opt]# curl -X GET http://127.0.0.1:9200
{
  "name" : "localhost.localdomain",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "fXlv8_62SoSmIRqw0laBrw",
  "version" : {
    "number" : "7.17.7",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "78dcaaa8cee33438b91eca7f5c7f56a70fec9e80",
    "build_date" : "2022-10-17T15:29:54.167373105Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
Card image cap

每一个你不满意的现在,都有一个你不努力的曾经。