Skip to content

安装

官网教程

安装ElasticSearch

Windows版本

ElasticSearch安装

前往官网下载 Windows 版本,https://www.elastic.co/cn/downloads/elasticsearch

下载的是压缩包,选择好目录,进行解压,然后进入解压好的目录,其目录结构为:

根目录
|—— bin:可执行脚本目录
|—— config:配置目录
   |—— log4j2.properties:日志配置文件
   |—— jvm.options:Java 虚拟机的配置
   |—— elasticsearch.yml:es 的配置文件
|—— data:索引数据目录
|—— lib:相关类库 Jar 包目录
|—— logs:日志目录
|—— modules:功能模块目录
|—— plugins:插件目录

进入 ElasticSearch 的 bin 目录下,会看到很多文件,启动的文件是 elasticsearch.bat

INFO

9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http 协议 RESTful 端口。

打开浏览器,访问:http://localhost:9200

问题解决

Elasticsearch 是使用 java 开发的,且 7.8 版本的 ES 需要 JDK 版本 1.8 以上,默认安装包带有 jdk 环境,如果系统配置 JAVA_HOME,那么使用系统默认的 JDK,如果没有配置使用自带的 JDK,一般建议使用系统配置的 JDK。

双击启动窗口闪退,通过路径访问追踪错误,如果是「空间不足」,请修改 config/jvm.options 配置文件。

sh
# 设置 JVM 初始内存为 1G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配内存
# Xms represents the initial size of total heap space
# 设置 JVM 最大可用内存为 1G
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g

Linux版本

请先确保 Linux 里已经安装了 jdk 1.8 以上版本

前往官网下载 Linux 版本,https://www.elastic.co/cn/downloads/elasticsearch

准备一台服务器或者有 Linux 系统的虚拟机

在 Linux 里,进入 /usr/local/ 目录,创建一个目录 elastic-stack

sh
cd /usr/local/
mkdir elastic-stack

将下载的 Linux 版本通过 Xftp 工具传输到 Linux 刚刚创建的目录下

在 Linux 里进入该目录,解压压缩包

sh
cd elastic-stack
tar -zxvf elasticsearch-7.15.2-linux-x86_64.tar.gz

解压后在当前目录下,如果名字太长,可以去掉版本号,也可以移动到其他位置

sh
# 改名字
mv elasticsearch-7.15.2 es
# 移动位置
mv -r 文件夹 位置

增加 elasticSearch 用户

必须创建一个非 root 用户来运行 ElasticSearch5 及以上版本,基于安全考虑,强制规定不能以 root 身份运行。

如果你使用 root 用户来启动 ElasticSearch,则会报错。

增加 elasticsearch 用户:

sh
useradd elasticsearch
passwd elasticsearch
# 设置的密码

修改目录权限至新增的 elasticsearch 用户(没权限启动会报错)

在 root 用户下执行命令(ElasticSearch 安装目录)

sh
# ElasticSearch 安装目录
chown -R elasticsearch /usr/local/elastic-stack/es

然后修改上述的data和log路径,vi /opt/elasticsearch-7.12.0/config/elasticsearch.yml

yml
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /data/es
#
# Path to log files:
#
path.logs: /var/log/es

配置文件修改

  1. 修改系统中允许应用最多创建多少文件等的限制权限。Linux 默认来说,一般限制应用最多创建的文件是 65535 个。但是 ES 至少需要 65536 的文件创建权限。
  2. 修改系统中允许用户启动的进程开启多少个线程。默认的 Linux 限制 root 用户开启的进程可以开启任意数量的线程,其他用户开启的进程可以开启 1024个线程。必须修改限制数为 4096+。因为ES至少需要 4096 的线程池预备。ES在 5.x 版本之后,强制要求在 Linux 中不能使用 root 用户启动 ES 进程。所以必须使用其他用户启动 ES 进程才可以。
  3. Linux 低版本内核为线程分配的内存是 128K。4.x 版本的内核分配的内存更大。如果虚拟机的内存是 1G,最多只能开启 3000+ 个线程数。至少为虚拟机分配 1.5G 以上的内存。

ES 可以对每个进程的文件数进行限制等,如果服务器内存或空间不足,可以通过修改配置文件,进行「裁剪」

修改 /opt/module/es/config/elasticsearch.yml 文件

yml
# 集群名
cluster.name: elasticsearch
# 节点名
node.name: node-1
# 允许外界访问的 ip
network.host: 0.0.0.0
# http 访问端口
http.port: 9200
# 集群节点的 master
cluster.initial_master_nodes: ["node-1"]

修改 /etc/security/limits.conf,在文件末尾中增加下面内容:

sh
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536

修改 /etc/security/limits.d/20-nproc.conf,在文件末尾中增加下面内容:

sh
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536
# 操作系统级别对每个用户创建的进程数的限制
* hard nproc 4096
# 注:* 带表 Linux 所有用户名称

修改 /etc/sysctl.conf,在文件末尾中增加下面内容:

sh
# 一个进程可以拥有的 VMA (虚拟内存区域)的数量,默认值为 65536
vm.max_map_count=655360

配置文件后,记得重新加载

sh
sysctl -p

切换创建好的用户进行启动

-d 代表后台启动

sh
# 切换用户
su elasticsearch
# 先进入安装目录
cd /usr/local/elastic-stack/es
./bin/elasticsearch -d

启动时,会动态生成文件,如果文件所属用户不匹配,会发生错误,需要重新进行修改用户

sh
# ElasticSearch 安装目录
chown -R elasticsearch /usr/local/elastic-stack/es

查看安装是否成功

sh
netstat -ntlp | grep 9200
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      11601/java          
tcp6       0      0 ::1:9200                :::*                    LISTEN      11601/java          
# 访问成功
[root@VM-0-6-centos ~]# curl 127.0.0.1:9200
{
    "name": "KELE-BINGTANG",
    "cluster_name": "elasticsearch",
    "cluster_uuid": "0Fgi85zRTo2eU6du7A56Kg",
    "version": {
        "number": "7.15.2",
        "build_flavor": "default",
        "build_type": "zip",
        "build_hash": "93d5a7f6192e8a1a12e154a2b81bf6fa7309da0c",
        "build_date": "2021-11-04T14:04:42.515624022Z",
        "build_snapshot": false,
        "lucene_version": "8.9.0",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}

记得开放端口 9200(外界访问的端口)

安装Kibana

Kibana 是一个免费且开放的用户界面,能够让你对 Elasticsearch 数据进行可视化,并 让你在 Elastic Stack 中进行导航。你可以进行各种操作,从跟踪查询负载,到理解请求如 何流经你的整个应用,都能轻松完成。

下载时尽量下载与 ElasicSearch 一致的版本。

Windows版本

前往官网下载 Windows 版本:https://www.elastic.co/cn/downloads/kibana

下载后进行解压,目录如图:

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

INFO

启动 Kibana 之前要启动 Elasticsearch

::: right

2021-11-14 @Young Kbt

访问:http://localhost:5601

kibana 会自动去访问 9200,也就是 elasticsearch 的端口号

修改界面语言

访问界面是英文,可修改成中文,进入根目录下的 config 目录,打开 kibana.yml 文件

滑到最底部,加入

yml
# 默认端口
server.port: 5601
# ES 服务器的地址
elasticsearch.hosts: ["http://localhost:9200"]
# 索引名
kibana.index: ".kibana"
# 支持中文
i18n.locale: "zh-CN"

进入根目录下的 bin 目录,执行 kibana.bat 文件即可启动

Linux版本

请先确保安装了 jdk1.8 以上版本

前往官网下载 Linux 版本:https://www.elastic.co/cn/downloads/kibana

利用 Xftp 工具传输到 Linux 里

解压压缩包

sh
tar -zxvf kibana-7.15.2-linux-x86_64.tar.gz

INFO

解压前记得切换到 root 用户,否则无法解压

::: right

2021-11-14 @Young Kbt

名字太长。可以去掉版本号

sh
mv kibana-7.15.2-linux-x86_64 kibana

修改目录权限至新增的 elasticsearch 用户(没权限启动会报错)

在 root 用户下执行命令(ElasticSearch 安装目录)

sh
# ElasticSearch 安装目录
chown -R elasticsearch /usr/local/elastic-stack/kibana

修改界面语言

访问界面是英文,可修改成中文,进入根目录下的 config 目录,打开 kibana.yml 文件

sh
vim /usr/local/elastic-stack/kibana/config/kibana.yml

滑到最底部,加入:

yml
# 默认端口
server.port: 5601
# ES 服务器的地址
elasticsearch.hosts: ["http://localhost:9200"]
# 索引名
kibana.index: ".kibana"
# 支持中文
i18n.locale: "zh-CN"

切换创建好的用户进行启动

sh
# 切换用户
su elasticsearch
# 先进入安装目录
cd /usr/local/elastic-stack/kibana-7.15.2-linux-x86_64
./bin/kibana

如果打算后台启动:

sh
nohup ./bin/kibana &

注意

记得开放端口 5601(外界访问的端口)

::: right

2021-11-16 @Young Kbt

安装Head

Head 是 elasticsearch 的图形化界面插件客户端,也是 elasticsearch 的集群管理工具,在集群操作用到。

注意

需要 NodeJS 的环境

::: right

2021-11-16 @Young Kbt

下载地址:https://github.com/mobz/elasticsearch-head/

也可以直接打开 Git Bash Here,直接下载

sh
git clone https://github.com/mobz/elasticsearch-head.git

下载

下载后进行解压,然后在解压目录安装依赖,打开 Vscode 或者管理员运行 CMD

配置文件修改

由于 ES 进程和客户端进程端口号不同,存在跨域问题,所以我们要在 ES 的配置文件中配置下跨域问题。

进入 ES 根目录 /config,修改 elasticsearch 配置文件:elasticsearch.yml,增加以下两句命令:

yml
# 跨域配置:
http.cors.enabled: true
http.cors.allow-origin: "*"

启动测试

启动后打开浏览器,访问:http://localhost:9100

配置密码访问

使用基本许可证时,默认情况下禁用Elasticsearch安全功能。由于我测试环境是放在公网上的,所以需要设置下密码访问。相关文档可以参考这里

  1. 停止 kibana 和 elasticsearch 服务
  2. xpack.security.enabled 设置添加到 ES_PATH_CONF/elasticsearch.yml 文件并将值设置为 true
  3. 启动elasticsearch (./bin/elasticsearch -d)
  4. 执行如下密码设置器,./bin/elasticsearch-setup-passwords interactive 来设置各个组件的密码
  5. 将elasticsearch.username设置添加到KIB_PATH_CONF/kibana.yml 文件并将值设置给elastic用户: elasticsearch.username: "elastic"
  6. 创建kibana keystore,./bin/kibana-keystore create
  7. 在kibana keystore 中添加密码 ./bin/kibana-keystore add elasticsearch.password
  8. 重启kibana 服务即可 nohup ./bin/kibana &

然后就可以使用密码登录了

参考文章

https://www.pdai.tech/md/db/nosql-es/elasticsearch-x-install.html