Elasticsearch 中的骚操作你确定不看看?
意气风发啊骑上我快乐的小摩托良心公众号啊!我上墙了你开始了嚯嚯嚯嚯嚯哈哈哈哈哈皮皮虾我们走可乐在厨房 红牛在冰箱6666666
看弹幕,点关注
"
Forget all the reasons why it won't work and believe the one reason why it will.
忘掉所有它不可行的理由,牢记唯一它会成功的原因
"
1.索引备份迁移
众所周知,ES 中的 mapping 只能在索引建立初期进行创建,且建立之后不可更改。mapping 对应的字段会映射成指定类型,未定义字段则自动映射,一般为 text 类型。那么想更改索引名或者更改某字段的 mapping 时,是否就束手无策了呢?当然不是!!!官方提供了一个接口,供索引备份迁移操作使用,那便是 reindex。当旧索引与新索引在同一节点时,效率相当高,万条数据瞬间完成( 大约只需0.4s
)。数百万数据也只需几分钟即可完成 操作,是不是很溜呢?快来学习一下吧。
请求方式:POST
请求 API _reindex
{"source": {"index": "要备份的索引名"},"dest": {"index": "新建的索引名"}
}
如果新索引中有数据,且 id 与旧索引中重复,那么会进行覆盖操作。
但是当数据量实在太大,高达几十 G 的时候,速度就会变得很慢,那是因为它底层还是利用了 scroll 操作。该如何进行优化呢?可以提升批量操作的文档数大小,如下:
{"source": {"index": "要备份的索引名","size" : 5000},"dest": {"index" : "新建的索引名","routing": "=cat"}
}
批量操作大小是如何确定的呢?是根据文档数以及文档容量进行确定的。根据查阅资料得知,一个好的起点是每批处理数据 5-15 MB,这是个什么概念?
1000 个 1kb 的文档大约 1MB;1000 个 100kb 的文档是 100MB。
然后逐步增加每批处理数据容量,进行调优,直到最终性能无法再次提升。还有一个方法,那便是提升硬件,比如换固态,你懂得~
还有一种方法提升写入效率,这是终极操作,那便是 sliced
。 reindex
支持 Sliced Scroll 操作。它的原理可以简单的理解为将每次的 Scroll 请求分解,分解后并行化请求,从而提升效率。方式为:
POST _reindex?slices=5&refresh
{"source": {"index": "要备份的索引名"},"dest": {"index": "新建的索引名"}
}
2.删除索引中指定的数据
请求方式:POST
请求 API _delete_by_query
{"query": {"match": {"字段名": "字段值"}}
}
方法便是先查出指定数据再删除。
3. 设置副本数、分片、动态映射
设置这些指标项可在建立 mapping 时一同设置。
{"settings":{"index":{// 刷新间隔"refresh_interval":"3s"},// 副本数"number_of_replicas":"0",// 切片(分布在每个节点上的切片)"number_of_shards":"1"},"mappings":{"_doc":{// 自动映射为 keyword 类型而不是默认的text类型"dynamic_templates":[{"string_fields":{"match":"*","match_mapping_type":"string","mapping":{"type":"keyword","norms":false}}}],// 建立mapping"properties":{"mydate":{"type":"date","format":"yyyy/MM/dd HH:mm:ss||date_time||strict_date_time"},"字段名":{"type":"字段类型"}}}}
}
全栈技术文章精选
redis操作命令总结
MySQL相关操作
SQL查询语句
前端中那些让你头疼的英文单词
Flask框架重点知识总结回顾
Elasticsearch查询时还在百度DSL语句吗?你可能需要这份总结
浅谈密码加密
Django框架中的英文单词
Django中数据库的相关操作
DRF框架中的英文单词
DRF框架
Django相关知识点回顾
python技术面试题-腾讯
Elasticsearch 中的骚操作你确定不看看?相关推荐
- JavaScript中的骚操作
JavaScript中的骚操作--记录自用 JavaScript中的骚操作 数组去重 数组转化为对象(Array to Object) 活用三元表达式 转换为数字类型(Convert to Numbe ...
- 逆向趣事:那些封印在代码中的骚操作
在逆向一些正常或恶意软件时,有时会遇到一些作者封印在代码中的骚操作,有趣又另类,甚至可以作为检测规则来应用,今天就来聊聊这些骚操作. 01 - 闲趣型 2012年的时候,Fireye捕获到一个Java ...
- 前端开发中的骚操作~~~~~
应用场景 场景一:将一个字符串变成数字 常规操作 let str = '2' console.log(Number(str)) //2 复制代码 骚操作一 let str = '2' console. ...
- 你知道Laravel ORM 中的骚操作吗
append class User extends Model {protected $appends = ['is_adult'];public function getIsAdultAttribu ...
- java操作es聚合操作并显示其他字段_深入浅析Elasticsearch中的聚合操作
如果写过Elasticsearch的聚合操作DSL,都知道它非常的繁琐,很简单的业务就导致异常复杂的json.因为它的聚合操作是嵌套的,一个聚合的输出可以是另一个聚合的输入,并且聚合还支持pipeli ...
- Java 8 中 Map 骚操作之 merge() 的用法
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | juejin.im/post/5d9b455a ...
- ajax从mysql提取数据在html中_Python骚操作,提取pdf文件中的表格数据!
在实际研究中,我们经常需要获取大量数据,而这些数据很大一部分以pdf表格的形式呈现,如公司年报.发行上市公告等.面对如此多的数据表格,采用手工复制黏贴的方式显然并不可取.那么如何才能高效提取出pdf文 ...
- java8 stream 分组_Java 8 中 Map 骚操作之 merge() 的用法
作者:LQ木头来源:http://juejin.im/post/5d9b455ae51d45782b0c1bfb Java 8 最大的特性无异于更多地面向函数,比如引入了 lambda等,可以更好地进 ...
- Python 语言中的骚操作
1.python中for _ in range(10) 与 for i in range(10): for _ in range(n) 一般仅仅用于循环n次,不用设置变量,用 _ 指代临时变量,只在这 ...
最新文章
- 核心业务系统的内容讨论(管理篇)(转载)
- Mr.J--贪吃蛇demo
- 各个JSON技术的比较(Jackson,Gson,Fastjson)的对比
- oracle blob 限制大小_Oracle的INSTANCE CAGING在数据库资源池中的作用
- RxJS修炼之 用弹珠测试学习RxJS
- java往json里添加对象_将新数组元素添加到JSON对象
- 小米路由器R1D改造记录-安装MIXBOX
- WPS2012专业版序列号
- 编写一个加密程序,要求从键盘输入一个字符串,然后输出加密后的字符串。加密规则是对每个字母转换为下一个字母表示,原来是a转换为b,原来是B转换为C。小写的z转换为小写的a,大写的Z转换为大写的A。
- 嵌入式和单片机的区别在哪?
- 安服/渗透测试面试题(2)
- AI落地的新范式,就“藏”在下一场软件基础设施的重大升级里
- 维基百科的语料库下载以及信息提取笔记
- 【Python CLI】第三章 控制台输出
- pytest--之测试报告allure配置
- 客户端七牛方式上传文件
- 抖音如何进行广告的投放
- 前端实现浏览器自动弹开三屏、一键关闭效果
- Web前端开发学习(一)
- xp系统sc服务器,SC怎么封装xp系统