# 如何提升es集群的搜索以及索引性能

**URL:** <https://discuss.elastic.co/t/es/198142>\
**Category:** 中文提问与讨论\
**Created:** [September 5, 2019, 3:18am UTC](https://discuss.elastic.co/t/es/198142 "2019-09-05T03:18:45Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![hyun\_wen](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/hyun_wen/32/53599_2.png) [@hyun\_wen](https://discuss.elastic.co/u/hyun_wen)\
**Post date:** [September 5, 2019, 3:18am UTC](https://discuss.elastic.co/t/es/198142/1 "2019-09-05T03:18:45Z")

</div>

集群里有6台机子 (1 主节点 + 1 负载均衡 + 4 数据节点)  
一水的dell r510  
Xeon 5500  
32G  
ssd（系统）+机械（数据）

之前纯索引数据的时候 4亿5千万多文档（1 Primary+ 1 Replica）  
ID是手动指定的 refresh = -1  
总索引速度在8000/s左右 主分片在4000/s左右 虽然不是很快 但是还能接受  
索引完成之后 1T data， 292 shards（主分片+副本）按时间每月创建索引  
需要对每一个文档进行更新  
需要对文档中的某字段（不止一处）  
进行更新 更新的内容需要从其他文档进行获取  
刚开始的流程是：GET 需要修改的文档 -\> 选取字段进行全索引搜索 -\> 将搜索结果与原文档合并进行更新  
但是全索引搜索速度在秒级以上，所以这个想法就被pass了  
为了缓解这个全索引搜索的问题 另起了一个关系型数据库 将需要获取的文档与原文档索引建立联系 通过关系数据库（查询在10ms）所以流程变成了  
GET 需要修改的文档 -\> 数据库查询 -\> GET 需要获取的文档 -\> 将搜索结果与原文档合并进行更新  
采用scoll 按时间逆序从现在到过去进行修改（获取的文档一定是在原文档之前的） 因为字段中需要修改的内容不止一处 所以需要获取的文档不止一个 需要更新的版本也不止一次 导致结果处理速度非常慢  
index速率在400/s （主+副）  
束手无策 请教一下社区的老哥

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [October 3, 2019, 3:18am UTC](https://discuss.elastic.co/t/es/198142/2 "2019-10-03T03:18:53Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
