ES数据写入调优2
1 修改事务日志translog参数(存在数据丢失风险)
默认设置下,translog 的持久化策略是每个请求都flush(durability参数值为request),这样能保证写操作的可靠性,但是对性能会有很严重的影响,实际测试发现如果使用默认设置进行导数据磁盘IO会持续占满。如果系统可以接受一定几率的数据丢失(或有手段补录丢失数据),可以通过调整 translog 持久化策略、周期性和一定大小的时候 flush,能大大提升导入性能。该配置项可以建索引时指定(或者配置到template里去)。执行命令如下所示:
curl -XPUT "http://ip:httpport/myindex/_settings" -H 'Content-Type: application/json' -d'
{
"index": { "translog": { "flush_threshold_size": "1GB", "sync_interval": "180s", "durability": "async" } }
}'
2 禁用Doc Values
默认情况下,支持doc values 的所有字段都是开启的。因为 Doc Values 默认启用,可以选择对数据集里面的大多数字段进行聚合和排序操作。但是如果确定不需要在字段上进行排序和聚合,或从脚本中访问字段值,则可以禁用 doc values 来节省磁盘空间。
要禁用 Doc Values ,在字段的映射(mapping)设置 “doc_values”为“false”即可。例如,这里我们创建了一个新的索引,字段 "session_id" 禁用了 Doc Values:
curl -XPUT "http://ip:httpport/myindex" -H 'Content-Type: application/json' -d'
{
"mappings": { "my_type": { "properties": { "session_id": { "type": "keyword", "doc_values": false } } } }
}'
3 禁用_source字段
“_source”字段包含在索引时传递的原始JSON文档正文。该“_source”字段本身不被索引(因此是不可搜索的),但它被存储,以便在执行撷取请求时可以返回,例如get或search。
虽然很方便,但是“_source”字段确实在索引中有不小的存储开销。因此,可以使用如下方式禁用:
curl -XPUT 'http://ip:httpport/tweets?pretty' -H 'Content-Type: application/json' -d'
{ "mappings": { "tweet": { "_source": { "enabled": false } } }
}'
在禁用_source 字段之前请注意:如果_source字段不可用,则不支持以下功能:
- update,update_by_query,reindex APIs.
- 高亮
- 将索引从一个Elasticsearch索引reindex(重索引)到另一个索引的能力,以便更改映射或分析,或将索引升级到新的主要版本。
- 通过查看索引时使用的原始文档来调试查询或聚合的能力。
- 潜在的未来可能会自动修复索引损坏的能力。
在禁用_source 字段之前请注意:如果_source字段不可用,则不支持以下功能:•update,update_by_query,reindex APIs.
•高亮
•将索引从一个Elasticsearch索引reindex(重索引)到另一个索引的能力,以便更改映射或分析,或将索引升级到新的主要版本。
•通过查看索引时使用的原始文档来调试查询或聚合的能力。
•潜在的未来可能会自动修复索引损坏的能力。
文章来源: www.jianshu.com,作者:百忍成金的虚竹,版权归原作者所有,如需转载,请联系作者。
原文链接:www.jianshu.com/p/e2e7493b2a19
- 点赞
- 收藏
- 关注作者
评论(0)