我的一个索引有上百个字段,这些字段都有可能被各种业务需求查询到,所以mapping中都做了配置。
大部分是不常更新的属性,只有几个实时性要求比较高,需要频繁更新的字段,值都是数字,内容比较少。
现在索引写入频率有1-2k/s,每次只更新变化的字段,类似下面这样:POST xxx_index/_update/1 { "doc": { "guid": "xxx", "xxx_cnt": 120, "xxx_ratio": 0.05 } }
我想确认下,是不是这样只有update时指定的字段会做索引和存储,以及向副本分片同步,其他字段即使再多也不会影响性能?
现在看起来似乎不是,我的索引配置成了1分片,9副本,现在看监控,这个主分片的节点cpu很高,带宽也很高,感觉如果只是索引了部分更新的这些少量字段,只有这些字段参与索引,不会有这么高的cpu和带宽。是不是它最终还是转换成了整个文档的_index操作,所有字段都根据mapping配置做了索引和存储?
大部分是不常更新的属性,只有几个实时性要求比较高,需要频繁更新的字段,值都是数字,内容比较少。
现在索引写入频率有1-2k/s,每次只更新变化的字段,类似下面这样:POST xxx_index/_update/1 { "doc": { "guid": "xxx", "xxx_cnt": 120, "xxx_ratio": 0.05 } }
我想确认下,是不是这样只有update时指定的字段会做索引和存储,以及向副本分片同步,其他字段即使再多也不会影响性能?
现在看起来似乎不是,我的索引配置成了1分片,9副本,现在看监控,这个主分片的节点cpu很高,带宽也很高,感觉如果只是索引了部分更新的这些少量字段,只有这些字段参与索引,不会有这么高的cpu和带宽。是不是它最终还是转换成了整个文档的_index操作,所有字段都根据mapping配置做了索引和存储?
1 个回复
FFFrp
赞同来自: zisonmo