为什么ES会如此缓慢地在5个切片中更新doc?

时间:2019-06-24 06:15:47

标签: python elasticsearch

我有一个ES数据库,其中包含70G以上的数据,我的索引刷新时间是30秒,当我更新doc值时,更新3个分片总是花费我4秒以上的时间,但是我看到了静态表在Kibana中,每次刷新使用的时间少于100毫秒,我知道何时可以对文件流缓存进行分段并可以搜索文档,但是我不知道为什么要花4秒钟以上的时间才能更新文档。

我使用python-elasticsearch,我尝试通过脚本使用id&routing更新,并在脚本中使用update_by_query,并且使用refresh更新索引,但是它们都使用同一时间。

# use update API
POST http://es-path/type/id/_update?refresh=true&routing=xxxxxx

{
    "script": "ctx._source.time='1'"
}

# use update_by_query API 
POST http://es-path/type/_update_by_query
{
    "script": "ctx._source.time='1'"
}

当我使用update_by_query API时,ES会快速返回响应,但由于索引刷新时间为30秒,因此它可以在30秒后进行搜索。 使用更新API时,我得到的ES响应时间总是超过4s。

我不知道为什么刷新如此之快,却更新得如此之慢。

0 个答案:

没有答案