ES相关知识
ElkStack介绍
对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch、Logstash、Kibana技术栈的结合
Elasticsearch
什么是全文检索和lucene?
基于java环境,基于Lucene之上包装一层外壳
Lucene是一个java的搜索引擎库,操作非常繁琐
全文检索和倒排索引:
数据里里的标题:
1.老男孩教育 1
2.老男孩教育linux学院11 1
3.老男孩教育python学院11
4.老男孩教育DBA11
5.老男孩教育oldzhang1
ES内部分词,评分,倒排索引:
老男孩 1 2 3 4 5
教育1 2 3 4 5
学院 2 3
linux2
python 3
DBA 4
用户输入:
老男孩学院
linux老男孩学院DBA
Elasticsearch应用场景
1.搜索: 电商,百科,app搜索
2.高亮显示: github
3.分析和数据挖掘: ELK
Elasticsearch特点
1.高性能,天然分布式
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 dockeriptables -nLiptables -Fiptables -Xiptables -Ziptables -nL查看索引curl -s 127.0.0.1:9200/_cat/indices
1.下载软件
mkdir /data/soft[root@db-01 /data/soft]# ll -htotal 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 -versionopenjdk 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-reloadsystemctl enable elasticsearch.servicesystemctl start elasticsearch.servicenetstat -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<<EOFnode.name: node-1path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchbootstrap.memory_lock: truenetwork.host: 10.0.0.51,127.0.0.1 http.port: 9200EOF
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=infinitysystemctl daemon-reloadsystemctl restart elasticsearch.service
es跟mysql关系对比
mysql | es |
---|---|
库 | 索引 |
表 | 类型 |
字段 | 项 key |
行 | 文档 |
es交互方式
三种交互方式
curl命令:
最繁琐
最复杂
最容易出错
不需要安装任何软件,只需要有curl命令
es-head插件:
查看数据方便
操作相对容易
需要node环境
kibana:
查看数据以及报表格式丰富
操作很简单
需要java环境和安装配置kibana
es-head插件安装
注意:需要修改配置文件添加允许跨域参数
修改ES配置文件支持跨域
/etc/elasticsearch/elasticsearch.ymlhttp.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-headdocker pull alivv/elasticsearch-headdocker run --name es-head -p 9100:9100 -dit elivv/elasticsearch-head传统安装使用nodejs编译安装elasticsearch-headcd /opt/wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xztar xf node-v12.13.0-linux-x64.tar.xzmv node-v12.13.0-linux-x64 nodevim /etc/profilePATH=$PATH:/opt/node/binsource profile npm -vnode -v git clone git://github.com/mobz/elasticsearch-head.gitunzip elasticsearch-head-master.zipcd elasticsearch-head-masternpm install -g cnpm --registry=https://registry.npm.taobao.orgcnpm installnpm 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: 5601server.host: "10.0.0.51"elasticsearch.hosts: ["http://localhost:9200"]kibana.index: ".kibana"
3.启动kibana
systemctl start kibanasystemctl status kibana -l #查看状态
4.操作ES
Dev Tools
kibana界面(10.0.0.51:5601)
插入数据(处理问题)
1.使用自定义的ID PUT oldzhang/info/1{ "name": "zhang", "age": "29"}2.使用随机IDPOST oldzhang/info/{ "name": "zhang", "age": "29", "pet": "xiaoqi"}3.和mysql对应关系建议单独列一个字段(解决延时问题)POST oldzhang/info/{ "uid": "1", "name": "ya", "age": "29"}
查询数据
1.简单查询GET /oldzhang/_searchGET /oldzhang/_search/12.单个条件查询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/1PUT oldzhang/info/1{ "name": "zhang", "age": "30", "job": "it"}POST oldzhang/info/1{ "name": "zhang", "age": "30", "job": "it"}
删除数据
1.删除指定ID的数据DELETE oldzhang/info/12.删除符合条件的数据POST oldzhang/_delete_by_query{ "query" : { "match":{ "age":"29" } }}3.删除索引DELETE oldzhang4.!!!警告!!!尽量不要在命令行或者Kibana里删除,因为没有任何警告建议使用es-head删除生产环境可以先把索引关闭掉,如果一段时间没人访问了再删除
工作中删除ES索引流程
1.先关闭需要删除的索引
2.如果有业务在用,开发回来找你
3.业务迁移完成后,再次关闭
4.假如关闭之后等了一个星期还没有人来找你
5.写邮件给领导,交代清楚所有流程,等回复
6.删除之前备份一份,然后删除
删除索引推荐(变灰)
集群的相关名词
1.集群健康状态绿色: 所有数据都完整,并且副本数满足黄色: 所有数据都完整,但是有的索引副本数不满足红色: 有的数据不完整2.节点类型主节点:负责调度数据分配到哪个节点数据节点: 负责处理落到自己身上的数据默认: 主节点同时也是数据节点3.数据分片主分片:实际存储的数据,负责读写,粗框的是主分片副本分片:主分片的副本,提供读,同步主分片,细框的是副本分片4.副本:主分片的备份,副本数量可以自定义
部署es集群
1.安装javarpm -ivh jdk-8u102-linux-x64.rpm2.安装ESrpm -ivh elasticsearch-6.6.0.rpm3.配置ES配置文件配置内存锁定:systemctl edit elasticsearch.service[Service]LimitMEMLOCK=infinity集群配置文件:b01配置文件:cat > /etc/elasticsearch/elasticsearch.yml <<EOFcluster.name: linux5node.name: node-1path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchbootstrap.memory_lock: truenetwork.host: 10.0.0.51,127.0.0.1http.port: 9200discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]discovery.zen.minimum_master_nodes: 1EOF==================================================================db02配置文件:cat> /etc/elasticsearch/elasticsearch.yml <<EOFcluster.name: linux5node.name: node-2path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchbootstrap.memory_lock: truenetwork.host: 10.0.0.52,127.0.0.1http.port: 9200discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.52"]discovery.zen.minimum_master_nodes: 1EOF 4.启动systemctl daemon-reloadsystemctl restart elasticsearch5.查看日志tail -f /var/log/elasticsearch/linux5.log6.ES-head查看是否有2个节点
es集群相关注意
注意事项:1.插入和读取数据在任意节点都可以执行,效果一样2.es-head可以连接集群内任一台服务3.主节点负责读写如果主分片所在的节点坏掉了,副本分片会升为主分片4.主节点负责调度如果主节点坏掉了,数据节点会自动升为主节点
查看集群各种信息
GET _cat/nodesGET _cat/healthGET _cat/masterGET _cat/fielddataGET _cat/indicesGET _cat/shardsGET _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 <<EOFcluster.name: linux5node.name: node-3path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearchbootstrap.memory_lock: truenetwork.host: 10.0.0.53,127.0.0.1http.port: 9200discovery.zen.ping.unicast.hosts: ["10.0.0.51", "10.0.0.53"]discovery.zen.minimum_master_nodes: 1EOF
5.启动
systemctl daemon-reloadsystemctl 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/settingsPUT _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/nodesGET _cat/healt
增强插件x-pack监控功能
前提:同步时间,集群有警告,不影响集群monitoring-->点一下蓝色图标
优化
1.内存 不要超过32G 48内存 系统留一半: 24G 自己留一半: 24G8G 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" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "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.zip2.创建索引 curl -XPUT http://localhost:9200/news3.创建模板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" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "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" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "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 /news13.创建模板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" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "fields" : { "content" : {} } }}
重新查数据的原理图
安装报错总结
1.集群内所有的机器没有全部都安装插件
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" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "fields" : { "content" : {} } }}
热更新中文分词库
原理图(F12>>>>ETag会改变)
1.安装nginx[root@db01 ~]# cat /etc/yum.repos.d/nginx.repo[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=trueyum makecache fastyum -y install nginx2.配置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 -tsystemctl start nginx3.写字典[root@db01 nginx]# cat /usr/share/nginx/html/my.txt 我中国日本打发台湾小日本伊朗时间滚蛋王总4.配置es的中文分词器插件vim /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"><properties><comment>IK Analyzer 扩展配置</comment><!--用户可以在这里配置自己的扩展字典 --><entry key="ext_dict"></entry> <!--用户可以在这里配置自己的扩展停止词字典--><entry key="ext_stopwords"></entry><!--用户可以在这里配置远程扩展字典 --><entry key="remote_ext_dict">http://10.0.0.51/my.txt</entry><!--用户可以在这里配置远程扩展停止词字典--><!-- <entry key="remote_ext_stopwords">words_location</entry> --></properties>5.将修改好的IK配置文件复制到其他所有ES节点scp /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml 10.0.0.53:/etc/elasticsearch/analysis-ik/6.重启所有的ES节点systemctl restart elasticsearch7.查看日志里字典的词有没有加载出来tail -f /var/log/elasticsearch/linux5.log8.打开es日志,然后更新字典内容,查看日志里会不会自动加载9.搜索测试验证结果POST /news2/text/6{"content":"昨天胖虎很嚣张,把班长打了一顿并让班长请他吃饭"}POST /news2/_search{ "query" : { "match" : { "content" : "班长" }}, "highlight" : { "pre_tags" : ["<tag1>", "<tag2>"], "post_tags" : ["</tag1>", "</tag2>"], "fields" : { "content" : {} } }}测试是否更新echo "武汉" >> /usr/share/nginx/html/my.txt10.电商上架新产品流程(先更新字典,在插入数据)- 先把新上架的商品的关键词更新到词典里- 查看ES日志,确认新词被动态更新了- 自己编写一个测试索引,插入测试数据,然后查看搜索结果- 确认没有问题之后,在让开发插入新商品的数据- 测试
备份恢复
0.前提条件
必须要有Node环境和npm软件nodejsnpm
1.nodejs环境安装(注意路径的存放)
cd /optweget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xztar xf node-v10.16.3-linux-x64.tar.xz mv node-v12.13.0-linux-x64 nodeecho "export PATH=/opt/node/bin:\$PATH" >> /etc/profilesource /etc/profile[root@db-01 ~]# node -vv10.16.3[root@db-01 ~]# npm -v6.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=analyzerelasticdump --input=http://10.0.0.51:9200/news2 --output=/data/news2_mapping.json --type=mappingelasticdump --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=analyzerelasticdump --input=/data/news2_mapping.json --output=http://10.0.0.51:9200/news2 --type=mappingelasticdump --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格式 恢复的时候,如果已经存在相同的数据,会被覆盖掉如果新增加的数据,则不影响,继续保留