ES数据写入调优2

网友投稿 782 2022-05-28

image.png

默认设置下,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" } } }'

默认情况下,支持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 } } } } }'

“_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(重索引)到另一个索引的能力,以便更改映射或分析,或将索引升级到新的主要版本。

通过查看索引时使用的原始文档来调试查询或聚合的能力。

潜在的未来可能会自动修复索引损坏的能力。

ES数据写入调优2

在禁用_source 字段之前请注意:如果_source字段不可用,则不支持以下功能:•update,update_by_query,reindex APIs. •高亮 •将索引从一个Elasticsearch索引reindex(重索引)到另一个索引的能力,以便更改映射或分析,或将索引升级到新的主要版本。 •通过查看索引时使用的原始文档来调试查询或聚合的能力。 •潜在的未来可能会自动修复索引损坏的能力。

Elasticsearch

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[es]ES数据查询调优1
下一篇:做事要有 “笃定” 的态度
相关文章