先说一下问题引发背景:
lz之前未对通过curl对ES进行实操过,由于线上ES中有一条客户信息的某个属性丢失,影响业务功能,于是进行数据恢复。在操作的时候,没有采用复制粘贴指南中的命令,采用手打的方式(建议还是复制粘贴吧),少打个“_update”,瞬间引发血案,数据不见了(注意:不加”_update“,会执行删除操作)。好在当天在查询ES的时候把结果copy了出来(还要谢谢notepad++编辑器,在经历数次关闭编辑器的情况下,文档未保存的时候数据没有给我清掉)。于是乎,再次执行put操作,数据恢复正常。在此记录一下操作命令的使用以及相关建议。
修改
curl -XPOST 'http://localhost:9200/customers/default/1001/_update?pretty' -d '{
"doc": {
"phone": "4c1fdd68952ece4dd8c4c9b16da96e9d"
}
}';
添加
curl -XPUT 'http://localhost:9200/customers/default/1001?pretty' -d '{
"id": "1001",
"name": "lisp",
"age": "24",
"phone": "4c1fdd68952ece4dd8c4c9b16da96e9d"
}';
说一下个人的总结和建议吧:①操作重要数据之前数据一定要备份,无论多么简单的操作(好的习惯很重要);②在使用各种命令操作重要数据的时候,执行前一定要检查检查再检查;③对重要数据建议不要直接操作数据库或者ES,最好能通过接口或者其它入口操作
附:
elasticsearch使用指南
https://endymecy.gitbooks.io/elasticsearch-guide-chinese/content/getting-started/modifying-data.html