首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化弹性搜索写入减慢读取速度

优化弹性搜索写入减慢读取速度
EN

Stack Overflow用户
提问于 2020-11-11 20:49:20
回答 1查看 94关注 0票数 0

我有一项Flink工作,它是以每秒数千个文档的速度对Elasticsearch进行大量写入/更新。每次我查询时,都需要10-20秒才能得到响应。

在同一个集群上,我有第二个索引,完全相同,但是在这个索引上,写操作现在被调低到0。当我查询时,需要几毫秒的时间才能得到响应。

,即写掉查询需要几毫秒。对于查询的写操作,需要10-20秒。

CPU利用率10%,JVM压力70%。ES 7.8.

那时看来,写到碎片似乎在某种程度上减缓了读取速度。考虑到"profile": true,这是很奇怪的,它给我提供了毫秒的查询时间,但是took (总请求时间)是以秒为单位的,就像我看到的。

我的问题是,为什么会发生这种情况,以及如何优化它?

(我确实想过,也许我可以读取副本节点,但ES不支持读取副本节点类型https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#node-roles )

EN

回答 1

Stack Overflow用户

发布于 2020-11-12 05:25:08

不确定您最初的refresh_interval值是什么,但是默认值是1秒,您显式地设置了这个值,这对搜索结果中返回的文档有很大影响。

Refresh使文档被写入搜索查询使用的片段,如果不进行刷新,您将得到过时的文档(对于现有的文档),在刷新后编写的新文档在搜索结果中也将不可用。

但这并不影响搜索查询的性能,在您的情况下,索引也在进行,搜索查询需要花费更多的时间来调试(请参阅CPU、内存、节点统计(搜索队列的队列大小和索引队列)等)。

顺便说一句,副本与shard有关,而不是节点,您可以很容易地动态地增加索引的副本,以提高搜索性能。

代码语言:javascript
复制
PUT /my-index-000001/_settings
{
  "index" : {
    "number_of_replicas" : 2 // no of replica you want to set.
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64793910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档