我有一个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。
我不知道为什么刷新如此之快,却更新得如此之慢。