Elasticsearch 7技术栈在Linux(Ubuntu 18.04.1 LTS)和上的部署、配置、管理

文章目录

  • 一、ELasticsearch安装与启动
    • 1.操作步骤
    • 2.报错
      • (1) can not run elasticsearch as root
      • (2) could not find java in JAVA_HOME or bundled at ...
      • (3) Error: Could not find or load main class XXX.JavaVersionChecker
      • (4)BindTransportException[Failed to bind to [9300-9400]]
      • (5)max virtual memory areas vm.max_map_count [65530] is too low
      • (6)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
  • 二、Elasticsearch配置详解
  • 三、Kibana教程
    • 1.安装与启动
    • 2.报错
      • (1)cluster. Error: No Living connections
  • 四、ELasticsearch7.2使用
    • 1.认识Elasticsearch
    • 2.使用postman操纵Elasticsearch
    • 3.数据类型
    • 4.elasticdump插件导入导出数据
  • 参考

一、ELasticsearch安装与启动

在 Elasticsearch Service 上创建部署时,将自动设置一个主节点和两个数据节点。通过从 tar 或 zip 存档安装,可以在本地启动 Elasticsearch 的多个实例,以查看多节点集群的行为。

1.操作步骤

  • 下载
cd /usr/local # 进入此目录
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz
  • 解压
tar -xvf elasticsearch-7.3.2-linux-x86_64.tar.gz
  • 启动
cd /usr/local/elasticsearch-7.3.2/bin # 进入目录
su es # 切换用户es
./elasticsearch # 启动Elasticsearch
  • 访问
浏览器中访问http://ip地址:9200

2.报错

(1) can not run elasticsearch as root

进入elasticsearch-7.3.2/bin目录下执行./elasticsearch时出现了这个错误,原因就是es因为安全问题拒绝使用root用户启动。解决办法就是创建非root用户。

  • 创建非root用户
groupadd es # 添加用户组es
useradd es -g es -p password # -g 指定组 -p 密码
chown es:es -R elasticsearch-7.3.2/ # -R 处理指定目录以及其子目录下的所有文件
  • 切换用户,重新启动
cd /elasticsearch-7.3.2/bin # 进入目录
su es # 切换用户es
./elasticsearch # 启动Elasticsearch

又报错了could not find java in JAVA_HOME or bundled at /root/elasticsearch-7.3.2/jdk/bin/java

(2) could not find java in JAVA_HOME or bundled at …

出现这个问题,要么是没装jdk,要么是环境变量有问题。突然意识到自己还没装jdk,下面来安装jdk。

  • 下载安装包

下载jdk-8u333-linux-x64.tar.gz

  • 将安装包上传至Linux系统中去

由于我是部署在自己的云服务器上,因此用的xshell内置的ftp文件传输工具将下载的tar.gz上传至linux服务器上。

  • 解压
sudo tar -zxvf jdk-8u333-linux-x64.tar.gz
  • 创建路径
mkdir /usr/local/java
  • 将解压后的jdk移动至新建的文件夹中去
sudo mv jdk1.8.0_333 /usr/local/java
  • 配置系统环境变量

看到网上很多教程都是修改的用户配置文件/etc/profile,实际上应该修改的是系统配置文件。

vim ~/.bashrc # 编辑系统配置文件

按下i,然后将以下配置粘贴到最末尾:

export JAVA_HOME=/usr/local/java/jdk1.8.0_333  
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH

然后按下esc键,输入:wq并回车保存配置。

  • 检验jdk是否成功安装
java -version

(3) Error: Could not find or load main class XXX.JavaVersionChecker

额,想不到在排除了以上几个问题后,启动Elasticsearch服务时还是抽风了。

出现这个问题的原因就是,我们需要切换到非root用户去启动Elasticsearch服务,但实际上Elasticsearch被我们安装到了root目录下。

  • 将Elasticsearch移动到用户目录中去
mv elasticsearch-7.3.2 /usr/local
  • 再次启动
cd /usr/local/elasticsearch-7.3.2/bin # 进入目录
su es # 切换用户es
./elasticsearch # 启动Elasticsearch

感动,这次终于成功了:
Elasticsearch 7技术栈在Linux(Ubuntu 18.04.1 LTS)和上的部署、配置、管理_第1张图片

(4)BindTransportException[Failed to bind to [9300-9400]]

报这个错说明服务器ip配置不对,修改elasticsearch.yml中network.host为内网ip。

(5)max virtual memory areas vm.max_map_count [65530] is too low

报这个错说明系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上。

#修改文件
sudo vim /etc/sysctl.conf
 
#添加参数
...
vm.max_map_count = 262144

#重新加载配置
sysctl -p

(6)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

报这个错说明缺少默认的配置,至少应该配置以下配置中的一个:

discovery.seed_hosts:  集群主机列表
discovery.seed_providers: 基于配置文件配置集群主机列表
cluster.initial_master_nodes: 启动时初始化的参与选主的node,生产环境必填
vim elasticsearch.yml # 修改配置

#添加配置
discovery.seed_hosts: ["127.0.0.1"]

二、Elasticsearch配置详解

Elasticsearch 有三个配置文件,存放在 config 目录下:

elasticsearch.yml 用于配置 Elasticsearch
jvm.options 用于配置 Elasticsearch JVM 的设置
log4j2.properties 用户配置 Elasticsearch 日志

JVM 参数设置
日志配置
重要Elasticsearch配置
重要的系统参数

三、Kibana教程

1.安装与启动

  • 下载

首先进入https://www.elastic.co/cn/downloads/past-releases/kibana-7-3-2下载好与Elasticsearch相同版本的安装包。然后把下载好的安装包上传到服务器上去。

  • 解压
tar -xvf kibana-7.3.2.tar.gz # 解压,注意换成你的压缩包名
cd kibana-7.3.2-linux-x86_64 # 进入目录
  • 修改配置
vim config/kibana.yml # 修改配置文件,修改以下内容
server.port: 5601 # 端口
server.host: "内网ip" # ip
elasticsearch.hosts: ["http://内网ip:9200"] # Elasticsearch的url
  • 修改权限,用非root用户操纵kibana
chown es:es -R kibana-7.3.2-linux-x86_64/

然后启动Elasticsearch服务。

  • 启动kibana
cd /usr/local/kibana-7.3.2-linux-x86_64/bin # 进入目录
su es # 切换用户es
./kibana # 启动
  • 访问
浏览器中访问http://ip地址:5601/app/kibana

2.报错

(1)cluster. Error: No Living connections

出现这个问题说明是没连上Elasticsearch,看一下elasticsearch.yml配置是否有问题,尤其是一些涉及到ip的地方。所有涉及到ip的地方我都写的服务器内网ip,而不是外网ip、localhost、127.0.0.1这些。

四、ELasticsearch7.2使用

1.认识Elasticsearch

先看下这篇博客,以便对Elasticsearch有一个概念上的认识:
语法基础博客1:这篇博客将文档、文档元数据、索引等说的明明白白

2.使用postman操纵Elasticsearch

教程在此,对于几种分词器也有说明
这个博客也很不错,也可以看看

3.数据类型

Elasticsearch 7.X 数据类型

4.elasticdump插件导入导出数据

  • 先安装node.js

教程在此

  • 导入导出命令
1 在es目录下安装elasticdump插件
npm install elasticdump -g

2 启动es服务

3 导出数据为json格式
在自己电脑上,进入准备存放json文件的目录,执行以下命令
elasticdump --input http://ip地址:9200/zhsf_3_0 --output ./zhsf_3_0_mapping.json --type=mapping

elasticdump --input http://ip地址:9200/zhsf_3_0 --output ./zhsf_3_0.json --type=data
第一条复制结构,第二条复制数据

4 通过json文件导入数据
elasticdump --input ./zhsf_4_0_mapping.json --output http://localhost:9200/zhsf_4_0 --type=mapping

elasticdump --input ./zhsf_4_0.json --output "http://localhost:9200/zhsf_4_0"

参考

Elasticsearch中文文档
博客1
博客2
博客3

你可能感兴趣的:(后端体系,elasticsearch,linux,ubuntu)