广告
返回顶部
首页 > 资讯 > 数据库 >ES相关知识
  • 299
分享到

ES相关知识

ES相关知识 2020-07-29 17:07:12 299人浏览 无得
摘要

elkStack介绍 对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为

ES相关知识

elkStack介绍

对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch、Logstash、Kibana技术栈的结合

Elasticsearch

什么是全文检索和lucene?

基于java环境,基于Lucene之上包装一层外壳
Lucene是一个java的搜索引擎库,操作非常繁琐

全文检索和倒排索引:

数据里里的标题:

老男孩教育 1
2.老男孩教育linux学院 1 1 1
3.老男孩教育python学院 1 1
4.老男孩教育DBA 1 1
5.老男孩教育oldzhang 1

ES内部分词,评分,倒排索引:

老男孩 1 2 3 4 5
教育 1 2 3 4 5
学院 2 3
linux 2
Python 3
DBA 4

用户输入:

老男孩学院
linux老男孩学院DBA

Elasticsearch应用场景

搜索: 电商,百科,app搜索
2.高亮显示: GitHub
3.分析和数据挖掘: ELK

Elasticsearch特点

高性能,天然分布式
2.对运维友好,不需要会java语言,开箱即用
3.功能丰富

Elasticsearch在电商搜索的实现

Mysql:

skuid name
1 狗粮100kg
2 猫粮50kg
3 猫罐头200g

ES:

聚合运算之后得到SKUID:
拿到ID之后,mysql就只需要简单地where查询即可
mysql:
select xx from xxx where skuid 1

ES安装启动(最好同步时间)

0.停止其他软件

systemctl stop Docker
iptables -nL
iptables -F
iptables -X
iptables -Z
iptables -nL

查看索引
curl -s 127.0.0.1:9200/_cat/indices

1.下载软件

mkdir /data/soft
[root@db-01 /data/soft]# ll -h
total 268M
-rw-r--r-- 1 root root 109M Feb 25  2019 elasticsearch-6.6.0.rpm
-rw-r--r-- 1 root root 159M Sep  2 16:35 jdk-8u102-linux-x64.rpm

2.安装jdk

rpm -ivh jdk-8u102-linux-x64.rpm 
[root@db-01 /data/soft]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

3.安装ES

rpm -ivh elasticsearch-6.6.0.rpm

4.检查

systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

netstat -lntup|grep 9200

[root@db01 /data/soft]# curl 127.0.0.1:9200
{
  "name" : "pRG0qLR",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "mNujse07QM61IOxecnanZg",
  "version" : {
    "number" : "6.6.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "a9861f4",
    "build_date" : "2019-01-24T11:27:09.439740Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

ES配置启动

1.查看ES有哪些配置

[root@db01 ~]# rpm -qc elasticsearch 
/etc/elasticsearch/elasticsearch.yml        #ES的主配置文件
/etc/elasticsearch/JVM.options              #jvm虚拟机配置
/etc/sysconfig/elasticsearch                #默认一些系统配置参数
/usr/lib/sysctl.d/elasticsearch.conf        #配置参数,不需要改动
/usr/lib/systemd/system/elasticsearch.service   #system启动文件

2.自定义配置文件

cp /etc/elasticsearch/elasticsearch.yml  /opt/
cat >/etc/elasticsearch/elasticsearch.yml<node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.51,127.0.0.1   
Http.port: 9200
EOF

3.重启服务后发现报错

systemctl restart elasticsearch.service

4.解决内存定失败:

查看日志发现提示内存锁定失败
[root@db01 ~]# tail -f /var/log/elasticsearch/elasticsearch.log 
[2019-11-14T09:42:29,513][ERROR][o.e.b.Bootstrap          ] [node-1] node validation exception
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

解决方案:
systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity

systemctl daemon-reload
systemctl restart elasticsearch.service

es跟mysql关系对比

mysql es
索引
类型
字段 项 key
文档

es交互方式

三种交互方式
curl命令:
最繁琐
最复杂
最容易出错
不需要安装任何软件,只需要有curl命令

es-head插件:
查看数据方便
操作相对容易
需要node环境

kibana:
查看数据以及报表格式丰富
操作很简单
需要java环境和安装配置kibana

es-head插件安装

==注意:需要修改配置文件添加允许跨域参数==

修改ES配置文件支持跨域

/etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true 
http.cors.allow-origin: "*"

es-head 三种方式:

1.npm安装方式

  • 需要nodejs环境
  • 需要连接国外源

2.docker安装

3.Google浏览器插件(不需要配置跨域也可以)

  • 修改文件名为zip后缀
  • 解压目录
  • 拓展程序-开发者模式-打开已解压的目录
  • 连接地址修改为ES的IP地址

具体操作命令

Head插件在5.0以后安装方式发生了改变,需要nodejs环境支持,或者直接使用别人封装好的docker镜像
插件官方地址
https://github.com/mobz/elasticsearch-head

使用docker部署elasticsearch-head
docker pull alivv/elasticsearch-head
docker run --name es-head -p 9100:9100 -dit elivv/elasticsearch-head

传统安装使用nodejs编译安装elasticsearch-head
cd /opt/
wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz
tar xf node-v12.13.0-linux-x64.tar.xz
mv node-v12.13.0-linux-x64 node
vim /etc/profile
PATH=$PATH:/opt/node/bin

source profile 
npm -v
node -v 
git clone git://github.com/mobz/elasticsearch-head.git
unzip elasticsearch-head-master.zip
cd elasticsearch-head-master
npm install -g cnpm --reGIStry=https://registry.npm.taobao.org
cnpm install
npm run start &

es-head界面(10.0.0.51:9100,连接10.0.0.1:9200)

kibana与ES交互

1.安装kibana

rpm -ivh kibana-6.6.0-x86_64.rpm

2.配置kibana(跟es装在同一台机器上)

[root@db-01 /data/soft]# grep "^[a-Z]" /etc/kibana/kibana.yml 
server.port: 5601
server.host: "10.0.0.51"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"

3.启动kibana

systemctl start kibana


systemctl status kibana -l #查看状态

4.操作ES

Dev Tools 

kibana界面(10.0.0.51:5601)

插入数据(处理问题)

1.使用自定义的ID 
PUT oldzhang/info/1
{
  "name": "zhang",
  "age": "29"
}

2.使用随机ID
POST oldzhang/info/
{
  "name": "zhang",
  "age": "29",
  "pet": "xiaoqi"
}

3.和mysql对应关系建议单独列一个字段(解决延时问题)
POST oldzhang/info/
{
  "uid": "1",
  "name": "ya",
  "age": "29"
}

查询数据

1.简单查询
GET /oldzhang/_search
GET /oldzhang/_search/1

2.单个条件查询
GET /oldzhang/_search
{
    "query" : {
        "term" : { "job" : "it" }
    }
}

3.多个条件查询
GET /oldzhang/_search
{
    "query" : {
      "bool": {
        "must": [
          {"match": {"pet": "xiao10"}},
          {"match": {"name": "yaz"}}
        ],
        "filter": {
          "range": {
            "age": {
              "gte": 27,
              "lte": 30
            }
          }
          }
        }
      }
    }
}

4.查询方式
- curl命令
- es-head 基础查询多个条件
- es-head 左侧字段查询
- kibana dev-tools 命令查询
- kibana 索引查询

更新数据

GET oldzhang/info/1

PUT oldzhang/info/1
{
  "name": "zhang",
  "age": "30",
  "job": "it"
}

POST oldzhang/info/1
{
  "name": "zhang",
  "age": "30",
  "job": "it"
}

删除数据

1.删除指定ID的数据
DELETE oldzhang/info/1

2.删除符合条件的数据
POST oldzhang/_delete_by_query
{
  "query" : {
    "match":{
      "age":"29"
    }
  }
}

3.删除索引
DELETE oldzhang

4.!!!警告!!!
尽量不要在命令行或者Kibana里删除,因为没有任何警告
建议使用es-head删除
生产环境可以先把索引关闭掉,如果一段时间没人访问了再删除

工作中删除ES索引流程

先关闭需要删除的索引

如果有业务在用,开发回来找你

业务迁移完成后,再次关闭

假如关闭之后等了一个星期还没有人来找你

写邮件给领导,交代清楚所有流程,等回复

删除之前备份一份,然后删除

删除索引推荐(变灰)

集群的相关名词

1.集群健康状态
绿色: 所有数据都完整,并且副本数满足
黄色: 所有数据都完整,但是有的索引副本数不满足
红色: 有的数据不完整

2.节点类型
主节点:        负责调度数据分配到哪个节点
数据节点:   负责处理落到自己身上的数据
默认: 主节点同时也是数据节点


3.数据分片
主分片:        实际存储的数据,负责读写,粗框的是主分片
副本分片:   主分片的副本,提供读,同步主分片,细框的是副本分片


4.副本:
主分片的备份,副本数量可以自定义

部署es集群

1.安装java
rpm -ivh jdk-8u102-linux-x64.rpm

2.安装ES
rpm -ivh elasticsearch-6.6.0.rpm

3.配置ES配置文件
配置内存锁定:
systemctl edit elasticsearch.service
[Service]
LimitMEMLOCK=infinity

集群配置文件:
b01配置文件:
cat > /etc/elasticsearch/elasticsearch.yml < /etc/elasticsearch/elasticsearch.yml <

es集群相关注意

注意事项:
1.插入和读取数据在任意节点都可以执行,效果一样
2.es-head可以连接集群内任一台服务

3.主节点负责读写
如果主分片所在的节点坏掉了,副本分片会升为主分片

4.主节点负责调度
如果主节点坏掉了,数据节点会自动升为主节点

查看集群各种信息

GET _cat/nodes
GET _cat/health
GET _cat/master
GET _cat/fielddata
GET _cat/indices
GET _cat/shards
GET _cat/shards/oldzhang

扩容第三台机器

1.安装java

rpm -ivh jdk-8u102-linux-x64.rpm

2.安装ES

rpm -ivh elasticsearch-6.6.0.rpm

3.配置内存锁定

systemctl edit elasticsearch.service
[Service]
LimitMEMLOCK=infinity

4.db03集群配置文件

cat > /etc/elasticsearch/elasticsearch.yml <

5.启动

systemctl daemon-reload
systemctl restart elasticsearch

集群注意事项

集群配置文件
1同一个集群的所有成员,集群名称要一样
2.节点名称每个主机都不一样
3.选举相关参数,所有可能成为master的节点数/2+1=集群的大多数

注意1:发现节点参数不需要把集群内所有的机器IP都加上
只需要包含集群内任意一个IP和自己的IP就可以
discovery.zen.ping.unicast.hosts: ["10.0.0.51","10.0.0.53"]

注意2: 集群选举相关的参数需要设置为集群节点数的大多数
discovery.zen.minimum_master_nodes: 2

注意3: 默认创建索引为1副本5分片

注意4: 数据分配的时候会出现2中颜色
紫色: 正在迁移
黄色: 正在复制
绿色: 正常

注意5: 3节点的时候
0副本一台都不能坏 
1副本的极限情况下可以坏2台: 1台1台的坏,不能同时坏2台
2副本的情况,发现节点数为1,可以同时坏2台

注意6:集群指令可以在集群内任意一个节点执行
通讯端口防火请要放行
9200 9300 
监控状态不能只监控颜色(稳定状态下,监控颜色和节点数)

动态修改最小发现节点数(临时,出问题时动态改不了)

GET _cluster/settings

PUT _cluster/settings
{
  "transient": {
    "discovery.zen.minimum_master_nodes": 2
  }
}

自定义副本分片和索引

索引为2副本3分片
索引为0副本5分片

注意:
索引一旦建立完成,分片数就不可以修改了
但是副本数可以随时修改

命令:
1.创建索引的时候就自定义副本和分片
PUT /yayayaay/
{
  "settings": {
    "number_of_shards": 3, 
    "number_of_replicas": 0
  }
}

2.修改单个索引的副本数(坏两台,其他索引丢数据)
PUT /oldzhang/_settings/
{
  "settings": {
    "number_of_replicas": 0
  }
}

3.修改所有的索引的副本数
PUT /_all/_settings/
{
  "settings": {
    "number_of_replicas": 0
  }
}

工作如何设置:
2个节点: 默认就可以 
3个节点: 重要的数据,2副本 不重要的默认 
日志收集: 1副本3分片 

监控

监控注意,不能只监控集群状态
1.监控节点数
2.监控集群状态
3.2者任意一个发生改变了都报警

监控命令: curl -s 127.0.0.1:9200/_cat/
GET _cat/nodes
GET _cat/healt

增强插件x-pack监控功能

前提:同步时间,集群有警告,不影响集群
monitoring-->点一下蓝色图标 

优化

1.内存 
不要超过32G 

48内存 
系统留一半: 24G 
自己留一半: 24G
8G 12G 16G 24G 30G 

当前业务量 4G
先给 8G
满了之后先别急的加内存,询问开发和老大,是不是我们的使用问题
加到 12G
满了之后先别着急加内存,询问开发和老大,是不是使用的问题
加16G 20G 24G 所有内存一半
要给老大打招呼,我们已经用到系统的一半内存了
官方建议不要超过30G,要考虑加机器了

2.硬盘的优化
RAID0 ssd
利用了ES集群本身的高可用优势来弥补ssd硬盘和raid0的风险
兼顾速度和安全,比较费钱
3.代码的优化
4.升级大版本


4.升级大版本
- 更新很多新功能
- 性能都会得到大幅提升
- 提前测试好
- 升级的风险
  - 数据丢失的风险
  - 功能的改变,代码需要修改
- 滚动升级

5.必杀技
加机器 money$$$$$$

集群发现相关参数

#跨机房调大点
discovery.zen.fd.ping_timeout: 120s  
discovery.zen.fd.ping_retries: 6  
discovery.zen.fd.ping_interval: 30s  

超时时间为120s
重试次数为6次
每次间隔30秒 

中文分词

未分词的情况:

1.插入测试数据
curl -XPOST http://localhost:9200/index/_create/1 -H 'Content-Type:application/JSON' -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST http://localhost:9200/index/_create/2 -H 'Content-Type:application/json' -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://localhost:9200/index/_create/3 -H 'Content-Type:application/json' -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://localhost:9200/index/_create/4 -H 'Content-Type:application/json' -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'

2.检测
curl -XPOST http://localhost:9200/index/_search  -H 'Content-Type:application/json' -d'
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["", ""],
        "post_tags" : ["", ""],
        "fields" : {
            "content" : {}
        }
    }
}
'

分词配置
1.配置中文分词器
cd /usr/share/elasticsearch
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip

2.创建索引 
curl -XPUT http://localhost:9200/news

3.创建模板
curl -XPOST http://localhost:9200/news/text/_mapping -H 'Content-Type:application/json' -d'
{
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_Word",
                "search_analyzer": "ik_smart"
            }
        }

}'

4.插入测试数据
POST /news/text/1
{"content":"美国留给伊拉克的是个烂摊子吗"}

POST /news/text/2
{"content":"公安部:各地校车将享最高路权"}

POST /news/text/3
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}

POST /news/text/4
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}

5.再次查询数据发现已经能识别中文了
POST /news/_search
{
    "query" : { "match" : { "content" : "张亚" }},
    "highlight" : {
        "pre_tags" : ["", ""],
        "post_tags" : ["", ""],
        "fields" : {
            "content" : {}
        }
    }
}

中文分词

未分词的情况

1.插入测试数据
POST /news/txt/1
{"content":"美国留给伊拉克的是个烂摊子吗"}

POST /news/txt/2
{"content":"公安部:各地校车将享最高路权"}

POST /news/txt/3
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}

POST /news/txt/4
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}

2.检测
POST /news/_search
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["", ""],
        "post_tags" : ["", ""],
        "fields" : {
            "content" : {}
        }
    }
}

分词配置

0.前提条件
- 所有的ES节点都需要安装
- 所有的ES都需要重启才能生效

1.配置中文分词器
cd /usr/share/elasticsearch
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip

本地文件安装
/usr/share/elasticsearch/bin/elasticsearch-plugin install file:///XXX/elasticsearch-analysis-ik-6.6.0.zip

重启
2.创建索引 
PUT /news1

3.创建模板
POST /news1/text/_mapping
{
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_smart"
            }
        }

}

ik_smart:粗略的分词
ik_max_word:比较精细的分词
4.插入测试数据
POST /news1/text/1
{"content":"美国留给伊拉克的是个烂摊子吗"}

POST /news1/text/2
{"content":"公安部:各地校车将享最高路权"}

POST /news1/text/3
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}

POST /news1/text/4
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}

5.再次查询数据发现已经能识别中文了
POST /news1/_search
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["", ""],
        "post_tags" : ["", ""],
        "fields" : {
            "content" : {}
        }
    }
}

重新查数据的原理图

安装报错总结

集群内所有的机器没有全部都安装插件
2.执行完命令不看提示,安装失败了不知道
3.创建的索引和搜索的索引名称不是一个
4.创建模版之前要先单独创建索引
5.安装包上传不完整导致安装失败
6.ES节点配置不统一
7.修改完没有全部重启
8.字典也一样

手动更新字典

1.创建字典
 vi /etc/elasticsearch/analysis-ik/main.dic 

2.把字典发送到集群内所有的机器
scp main.dic 10.0.0.52:/etc/elasticsearch/analysis-ik/

3.重启所有的ES节点!!!
systemctl restart elasticsearch 

4.更新索引的数据
POST /news2/text/5
{"content":"昨天胖虎很嚣张,让张亚请他吃饭"}
5.搜索测试
POST /news2/_search
{
    "query" : { "match" : { "content" : "胖虎" }},
    "highlight" : {
        "pre_tags" : ["", ""],
        "post_tags" : ["", ""],
        "fields" : {
            "content" : {}
        }
    }
}

热更新中文分词库

原理图(F12>>>>ETag会改变)

1.安装Nginx
[root@db01 ~]# cat /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/Centos/$releasever/$basearch/
gpGCheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

yum makecache fast
yum -y install nginx
2.配置nginx

[root@db01 nginx]# cat /etc/nginx/conf.d/default.conf 
server {
    listen       80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html/;
        charset utf-8;
    autoindex on;
    autoindex_localtime on;
    autoindex_exact_size off;
    }
}
nginx -t
systemctl start nginx
3.写字典
[root@db01 nginx]# cat /usr/share/nginx/html/my.txt 
我
中国
日本
打发
台湾
小日本
伊朗
时间
滚蛋
王总


4.配置es的中文分词器插件
vim /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml



    IK Analyzer 扩展配置
    
    
     
    
    
    http://10.0.0.51/my.txt
    
    


5.将修改好的IK配置文件复制到其他所有ES节点
scp /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml 10.0.0.53:/etc/elasticsearch/analysis-ik/

6.重启所有的ES节点
systemctl restart elasticsearch
7.查看日志里字典的词有没有加载出来
tail -f /var/log/elasticsearch/linux5.log

8.打开es日志,然后更新字典内容,查看日志里会不会自动加载

9.搜索测试验证结果
POST /news2/text/6
{"content":"昨天胖虎很嚣张,把班长打了一顿并让班长请他吃饭"}

POST /news2/_search
{
    "query" : { "match" : { "content" : "班长" }},
    "highlight" : {
        "pre_tags" : ["", ""],
        "post_tags" : ["", ""],
        "fields" : {
            "content" : {}
        }
    }
}
测试是否更新
echo "武汉" >> /usr/share/nginx/html/my.txt
10.电商上架新产品流程(先更新字典,在插入数据)
- 先把新上架的商品的关键词更新到词典里
- 查看ES日志,确认新词被动态更新了
- 自己编写一个测试索引,插入测试数据,然后查看搜索结果
- 确认没有问题之后,在让开发插入新商品的数据
- 测试

备份恢复

0.前提条件

必须要有Node环境和npm软件
nodejs
npm    

1.nodejs环境安装(注意路径的存放)

cd /opt
weget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
tar xf  node-v10.16.3-linux-x64.tar.xz 
mv node-v12.13.0-linux-x64 node
echo "export PATH=/opt/node/bin:$PATH" >> /etc/profile
source /etc/profile
[root@db-01 ~]# node -v
v10.16.3
[root@db-01 ~]# npm -v
6.9.0

2.指定使用国内淘宝npm源

npm install -g cnpm --registry=https://registry.npm.taobao.org

3.安装es-dump

cnpm install elasticdump -g

4.备份命令

备份成可读的json格式
elasticdump 
  --input=http://10.0.0.51:9200/news2 
  --output=/data/news2.json 
  --type=data

备份成压缩格式(恢复先解压gzip -d ,在恢复)
elasticdump 
  --input=http://10.0.0.51:9200/news2 
  --output=$|gzip > /data/news2.json.gz  

备份分词器/mapping/数据一条龙服务(先恢复mapping表空间,在恢复数据)不同节点之间也可以备份恢复
elasticdump 
  --input=http://10.0.0.51:9200/news2 
  --output=/data/news2_analyzer.json 
  --type=analyzer
elasticdump 
  --input=http://10.0.0.51:9200/news2 
  --output=/data/news2_mapping.json 
  --type=mapping
elasticdump 
  --input=http://10.0.0.51:9200/news2 
  --output=/data/news2.json 
  --type=data

5.恢复命令

只恢复数据
elasticdump 
  --input=/data/news2.json 
  --output=http://10.0.0.51:9200/news2

恢复所有数据包含分词器/mapping一条龙
elasticdump 
  --input=/data/news2_analyzer.json 
  --output=http://10.0.0.51:9200/news2 
  --type=analyzer
elasticdump 
  --input=/data/news2_mapping.json 
  --output=http://10.0.0.51:9200/news2 
  --type=mapping
elasticdump 
  --input=/data/news2.json 
  --output=http://10.0.0.51:9200/news2
  --type=data

批量备份

curl -s 127.0.0.1:9200/_cat/indices|awk '{print $3}'

6.备份恢复注意

恢复的时候需要先解压缩成json格式 
恢复的时候,如果已经存在相同的数据,会被覆盖掉
如果新增加的数据,则不影响,继续保留
您可能感兴趣的文档:

--结束END--

本文标题: ES相关知识

本文链接: https://www.lsjlt.com/news/4422.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ES相关知识
    ElkStack介绍 对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为...
    99+
    2020-07-29
    ES相关知识
  • Android相关知识---wifi
    Android---wifi 相关知识 网上的资料: WiFi协议 https://blog.csdn.net/leho666/article/details/89136542...
    99+
    2022-06-06
    Android
  • HTML5相关知识点
    这篇文章主要介绍了HTML5相关知识点,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。SGML(标准通用标记语言)和HTML(超文本标记语言)...
    99+
    2022-10-19
  • python 模块相关知识
    1,python 文件标准开头:#!/usr/bin/env python3 #-- coding: utf-8 -- 2,import sys.,sys.args 是一个list,里面包含了命令行数据的list.3,安装Anaconda:...
    99+
    2023-01-31
    相关知识 模块 python
  • MySQL相关基础知识
    ------------恢复内容开始------------ 目录MySQL相关知识Mysql链接创建数据库删除数据库选择数据库数据类型数据表相关创建数据表创建数据表需要的信息语法字段约束条件删除数据表查询数据表结构修改表的结构增...
    99+
    2021-08-16
    MySQL相关基础知识
  • 总结HTML相关知识
    这篇文章主要介绍“总结HTML相关知识”,在日常操作中,相信很多人在总结HTML相关知识问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”总结HTML相关知识”的疑惑有所帮助!接...
    99+
    2022-10-19
  • PHP安全相关知识
    PHP中有两种短标签,和。其中,相当于对则是相当于这种写法总是适用的,这种写法则需要short_open_tag开启才行。 php后台插一句话的新思路 1): demo: 这个标签现在程序大多都...
    99+
    2023-09-14
    php 安全 服务器
  • package.json相关知识记录
    一、相关字段 npm官方字段介绍 🍧 bin   =>   简单理解:指定命令的名称及路径   🍉 相当于想path中添加路径,局部安装是在./node_modules/.bin/,全局安装是在全局的bin目...
    99+
    2023-08-30
    javascript 前端
  • python--初始面向对象:类的相关知识,对象的相关知识
    引子假设你是一个开发人员,现在需要你开发一款叫做当然很简单,两个角色,1个人物,1个boss,且人物和boss都有不同的技能,比如人物用觉醒技能秒了boss,掉了xx装备,boss用大招秒了人物,人物死亡,怎么描述这种不同的人物和他们的功能...
    99+
    2023-01-30
    相关知识 面向对象 对象
  • jdk 8 hashMap相关知识点
    1. compute、 computeIfAbsent、computeIfPresent 这三个是 Java Map 接口中的三个方法,用于对 Map 中的键值对进行操作。它们的区别在于执行的时机和操作的方式: compute(K key,...
    99+
    2023-10-12
    java 开发语言 hashMap
  • 云服务器相关知识
    云服务器(Cloud Server)是一种基于互联网的服务器,它可以让用户远程访问并管理互联网上的资源,如图片、视频、文档、音频和3D图形等。云服务器提供了一种高性能、高可扩展性和弹性的资源访问方式。 云服务器通常使用虚拟化技术将多个计算...
    99+
    2023-10-26
    相关知识 服务器
  • 【RAC】RAC相关基础知识
      【RAC】RAC相关基础知识 ...
    99+
    2022-10-18
  • Android Insets相关知识总结
    目录什么是Insets?Insets相关类InsetsStateInsetsStateControllerInsetsSourceInsetsSourceConsumer(ImeIn...
    99+
    2022-11-11
  • Spring Cache相关知识总结
    简介  Spring 从 3.1 开始定义了 org.springframework.cache.Cache 和 org.springframework.cache.Cac...
    99+
    2022-11-12
  • HTML相关知识点总结
    目录简介HTML文档和网页的关系呢?HTML的标签样子?HTML基本概念标签元素属性注释编码规则HTML常用元素标题段落链接跳转页面:跳转锚点图片列表有序列表无序列表定义列表表格块表...
    99+
    2022-11-12
  • Python中元组相关知识
    下面给大家介绍以下元组的相关知识:   ·元组可以看成是一个不可更改的list 1.元组的创建 # 创建空元祖 t = () print(type(t)) # 创建只有一个值的元组 # 观察可知元组中如果纯数字的话,类型是int,加个...
    99+
    2023-01-30
    中元 相关知识 Python
  • 关于JavaScript相关知识有哪些
    这期内容当中小编将会给大家带来有关关于JavaScript相关知识有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  (一)JS中基本类型和引用类型  JavaScr...
    99+
    2022-10-19
  • 关于python列表相关知识点
    目录python列表1.列表的创建与删除列表的特点1.列表元素按顺序有序排序2.索引映射唯一数据3.列表可以存储重复数据4.任意数据类型混存5.根据需要动态分配和回收内存2.列表的查...
    99+
    2023-05-16
    python python列表
  • 【字节面试】Fail-fast知识点相关知识点
    字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。 1.问题 什么是Fail-fast机制? Hash...
    99+
    2023-08-31
    面试 java 字节 fail-fast Enumeration
  • HashMap相关知识点有哪些
    本篇内容介绍了“HashMap相关知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!HashMap 和 HashSet 是 Java...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作