elasticsearch 索引不小心把建好的索引删除了还能恢复吗

在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
试过delete 请求 索引/_all 等方法都删除失败了。- -# 怎么能根据dsl删除数据?
只删除数据不删除索引,不想每次都重建mapping
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
curl -XDELETE 'localhost:9200/customer/external/_query?pretty' -d '
"query": { "match": { "name": "John" } }
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:用户名:storysky
文章数:81
评论数:406
访问量:1806517
注册日期:
阅读量:1297
阅读量:3317
阅读量:585294
阅读量:470977
51CTO推荐博文
之前用 logstash来做日志收集 并用 elasticsearch来搜索,因为日志没有进行过滤,没几天就发现elasticsearch的索引文件大的吓人,之前还真没清理过。其实要说清理也简单,直接到 elasticsearch data文件夹里删掉就行了,但怎么也得做的有点技术含量不是?
上网站看了看文档,其实也挺简单一条命令就行了
#&curl&-XDELETE&'http://172.16.1.16:9200/logstash-2013.03.*'&清理掉了所有 3月份的索引文件,我发现curl 删除比rm删除要快出很多
下面是主页上的详细介绍,其他部分可以自己看,
http://www.elasticsearch.org/guide/reference/api/delete/本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)Elasticsearch 之 不停服务重建索引 - Mr灬Sunny的专栏 - CSDN博客
Elasticsearch 之 不停服务重建索引
当我们在使用Es做为我们应用的全文检索服务器的时候,文档结构避免不了会发生变化,比如增加字段,而且增加的字段需要进行分词时,再比如原来文档结构中的字段类型发生改变了,假设原来的字段类型是String, 而修改后的字段类型是Object,Es是不支持这种直接修改字段类型的。我们能做的可能只有进行重新索引,当然关系型数据库也不支持这种类型字段改变的情况。
Elasticsearch 的各种语言的API在此不做介绍了(包括rest api),很简单.
也许现在有人提问当进行重新的索引的时候程序难道不用改变么?
当然不用。相信用过Spring的同学都知道,spring配置中有一个叫“别名的东西“
&authentication-manager alias="authenticationManager"&
&authentication-provider user-service-ref="sysUserDetailsService"/&
&/authentication-manager&
幸运的是Es也有这个“别名“机制
索引当我们在第一次建立一个索引的时候最好还是创建一个别名。
避免以后改变的时候要不改变程序,要不删除原来的数据。很麻烦
好了,废话不多说了直接上代码:
CreateIndexResponse response = client.admin().indices().prepareCreate(indexName).setAliases(aliase).setSettings(builder).execute().actionGet()
其中setAliases就是设置创建的这个索引的别名,访问哪一个都一样,包括CRUD操作。
索引名称是:china_address1
索引别名是:address
访问那一个都是一样的。
重新索引数据
SearchResponse scrollResp = client
.prepareSearch(indexName)
.setSearchType(SearchType.SCAN)
.setScroll(new TimeValue(60000))
.setSize(100)
.execute()
.actionGet()
while (true) {
SearchHit[] arrayScoll = scrollResp.getHits().getHits()
//处理查询出来的数据放入到新的索引里面
createIndexBuilk(arrayScoll, newIndexName, arrayMapping)
scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(60000)).execute().actionGet()
if (scrollResp.getHits().getHits().length == 0) {
然后再删除旧索引的别名address,再在新索引中加入别名address.这样应用就可以不用重新启动也不需要改就可以直接访问服务了。但是还有会有一个瞬间的增量问题。
我的热门文章拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3b9d424b-ua98).
重新安装浏览器,或使用别的浏览器elasticsearch5.0.1集群一次误删除kibana索引引发的血案 - CSDN博客
elasticsearch5.0.1集群一次误删除kibana索引引发的血案
elasticsearch集群中一次删除kibana索引引发的血案
1.问题发生的过程:
早上的时候有某个索引无法看到报表数据,于是就点该报表多次,估计集群被点挂了,报错:Elasticsearch is still initializing the kibana index
当时有点慌估计是昏了头,直接根据baidu某篇博文的提示进行了操作
curl -XDELETE http://localhost:9200/.kibana
这下悲剧发生了,kibana控制台没有东西了,业务部门无法查询报表。。。
后面在/上搜索到了老外的解释,会丢失所有的配置、索引、图形和报表:
the curl -XDELETE http://localhost:9200/.kibana command works fine, however you lost all your kibana' settings (indexes, graphs, dashboards)
2.解决思路
之前有5个节点部署在阿里云其中有两个节点因为磁盘空间不足扩容,扩容前做了镜像,抱着试试的态度新买服务器挂接上之前的镜像,
找到之前的操作记录:
发现 .kibana索引的uuid为E9kS4THKREKR36IuPICPIA,大小大约有179k,如下
# curl '10.26.241.237:9200/_cat/indices?v'
health status index
pri rep docs.count docs.deleted store.size pri.store.size
E9kS4THKREKR36IuPICPIA
voice:user:login
VMpfcIiFS9OixB-J7-ZLWw
voice:user:logout
W8MAAbp7RO6ZYYx7FcfcVA
push:task:result
qWs38E_eQbCicgB312PE8w
yellow open
push:user:req
wqJi6jTFT-a0ZN-57Z63Yw
voice:mic:used
pdZZr8mdSwirBGSAYTvIwg
user:register
LZ_DwUpDRAyc0gfsFlCdGA
push:user:app
0ivr0VubTCG5mFM0yoq34w
voice:send:text
rrS8Kd4nRlim7wEOMqJ1wA
voice:mic:lose
iUhw676hTTSsyJnv3K0s6Q
user:login
C-qSmB0ST2CrMkb7snrbKQ
push:user:task
7XPBJeBWRbas5t1XwiKt2Q
speech:voice:result 7wISjRCeQZSY4SsCNunh8w
script:user:info
qTZEpjkmRiSyyL1WBpMS5g
speech:voice:upload VBrFZq8QScOFYN1jsCkN4A
发现虽然有kibana的索引但是只有在es的数据目录/data/es/data/nodes/0/indices下查找,发现只有不到30k明显不是我们需要的数据
将这台服务器退掉,重新再次购买了一台服务器,挂载上另外一台之前保存的镜像,发现此时的大小为212k左右,和没有出问题之前差不多大小,估计这个就是我们需要的东西了,有点运气成分在吧,5台服务器每个索引有两份,直接将这个数据拷贝到目标服务器发现不行(直接就被es删除掉了)
于是在网上搜索到了elasticdump工具,可以通过这个工具将索引导出然后倒入到目标服务器
原服务器:10.30.138.62
目标服务器:10.26.241.237
3.安装elasticdump工具
yum install epel-release -y
yum install nodejs npm -y
npm install elasticdump -y
4.导出具体配置信息
# node_modules/elasticdump/bin/elasticdump --ignore-errors=true &--scrollTime=120m &--bulk=true --input=http://10.30.138.62:9200/.kibana & --output=data.json &--type=data
Fri, 10 Mar :45 GMT | starting dump
Fri, 10 Mar :45 GMT | got 40 objects from source elasticsearch (offset: 0)
Fri, 10 Mar :45 GMT | sent 40 objects to destination file, wrote 40
Fri, 10 Mar :45 GMT | got 0 objects from source elasticsearch (offset: 40)
Fri, 10 Mar :45 GMT | Total Writes: 40
Fri, 10 Mar :45 GMT | dump complete
导出mapping信息
# /root/node_modules/elasticdump/bin/elasticdump --ignore-errors=true &--scrollTime=120m &--bulk=true --input=http://10.30.138.62:9200/.kibana & --output=mapping.json &--type=mapping
Fri, 10 Mar :11 GMT | starting dump
Fri, 10 Mar :11 GMT | got 1 objects from source elasticsearch (offset: 0)
Fri, 10 Mar :11 GMT | sent 1 objects to destination file, wrote 1
Fri, 10 Mar :11 GMT | got 0 objects from source elasticsearch (offset: 1)
Fri, 10 Mar :11 GMT | Total Writes: 1
Fri, 10 Mar :11 GMT | dump complete
5.恢复到目标服务器中
直接在安装了elasticdump工具的服务器上操作,节省在目标服务器上安装工具的时间
导入mapping
# node_modules/elasticdump/bin/elasticdump --input=mapping.json &--output=http://10.26.241.237:9200/.kibana --type=mapping
Fri, 10 Mar :08 GMT | starting dump
Fri, 10 Mar :08 GMT | got 1 objects from source file (offset: 0)
Fri, 10 Mar :08 GMT | sent 1 objects to destination elasticsearch, wrote 7
Fri, 10 Mar :08 GMT | got 0 objects from source file (offset: 1)
Fri, 10 Mar :08 GMT | Total Writes: 7
Fri, 10 Mar :08 GMT | dump complete
导入具体的kibana配置信息
# node_modules/elasticdump/bin/elasticdump --input=data.json &--output=http://10.26.241.237:9200/.kibana --type=data
Fri, 10 Mar :25 GMT | starting dump
Fri, 10 Mar :25 GMT | got 40 objects from source file (offset: 0)
Fri, 10 Mar :25 GMT | sent 40 objects to destination elasticsearch, wrote 40
Fri, 10 Mar :25 GMT | got 0 objects from source file (offset: 40)
Fri, 10 Mar :25 GMT | Total Writes: 40
Fri, 10 Mar :25 GMT | dump complete
总结,通过elasicdump可以方便的备份kibana配置,或是迁移
操作之前一定要测试或者明白操作的结果,不能乱操作,特别是生产环境和自己慌乱的情况下
记录是个好习惯
阿里云的镜像功能不错,可以使用它做镜像策略,例如每天备份一次,数据量大可以2天备份一次,以防万一
本文已收录于以下专栏:
相关文章推荐
ELK 套装包括 ElasticSearch、LogStash 和 Kibana。 其中,ElasticSearch 是一个数据搜索引擎(基于 Apache Lucene)+分布式 NoSQ...
Logstash是一个开源的,可以对分布式环境中的日志进行收集分析的工具。 Kibana也是一个开源和免费的工具,他可以帮助汇总,分析和搜索重要日志数据并提供友好的web界面,它可以为Logstash...
问题描述:
When I am trying to start Kibana I am facing the following issue. I first restarted my el...
引言:对于刚接触ES的童鞋,经常搞不明白ES的各个概念的含义。尤其对“索引”二字更是与关系型数据库混淆的不行。本文通过对比关系型数据库,将ES中常见的增、删、改、查操作进行图文呈现。能加深你对ES的理...
1、jvm类型
-server 一定要作为第一个参数,在多个CPU时性能佳,默认模式。
-server 默认,服务端模式,启动慢,运行快,占用内存较大,编译器优化
-client 客户...
使用pmap查看进程内存
使用pmap可以查看某一个进程(非java的也可以)的内存使用使用情况,
命令格式:
pmap 进程id
例如运行:
pmap 12358
...
elasticsearch数据备份与恢复
1.在浏览器中运行http://ipaddress:9200/_flush,这样确保索引数据能保存到硬盘中。
2.原数据的备份。主要是elasticsearc...
本文主要讲解Elasticsearch下实现索引迁移的几种方式。0、引言将ES中的索引拷贝到其他ES中,或者将ES整体迁移,研究发现有两个开源的工具:elaticserch-dump和 Elastic...
Elasticsearch 是一款非常高效的全文检索引擎。
Elasticsearch 可以非常方便地进行数据的多维分析,所以大数据分析领域也经常会见到它的身影,生产环境中绝大部分新产生的数...
最近工作中发现有一个es集群不稳定,影响了线上其他项目的使用。遂考虑迁移索引到其他集群上;
网上搜索到有多重方案:
1.查询并导出数据
2.目录复制
3.采用snapshot快照
各种方案各...
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 elasticsearch 跨索引 的文章

 

随机推荐