python - AWS Elasticsearch批量插入延迟急剧增加

标签 python amazon-web-services elasticsearch

我在 t2.small节点和10gb EBS卷上使用AWS Elasticsearch。每隔5分钟,我会索引约5000个文档*。对于每个文档,我都手动传递唯一​​ID。由于大多数文档都已更新,因此对于几乎所有文档来说都可以是版本2或3。

还值得一提的是,每天我都会运行delete_by_query操作来删除超过一周的文档。

通常,批量插入的等待时间小于1秒。但是今天突然之间,在短短几个小时内进行了两周的测试之后,等待时间增加到 3分钟,只是批量插入5000个文档

我正在使用elasticsearch-py和awsauth。

我检查了AWS Cluster运行状况统计信息。自从出现了大容量插入延迟问题以来,旧垃圾回收时间似乎急剧增加。似乎这些之间可能存在关联。

enter image description here

该如何处理?是因为维护文档的多个版本还是使用查询删除功能?

最佳答案

这并不特别令人惊讶,但是仅由于变量太多,很难为您提供完整的答案。要考虑的一些事情:

  • 重新索引文档非常昂贵,因为它涉及到首先删除
  • 随着索引变大,执行段合并的开销也随之增加
  • 随着索引变大,维护doc值和全局序数会变得更加昂贵
  • 您正在运行易爆的t2实例,因此可能会耗尽CPU或IO积分
  • 您没有提到进行优化/强制合并,如果您有很多已删除/过时的文档,这可能会有所帮助
  • 关于python - AWS Elasticsearch批量插入延迟急剧增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57796827/

    相关文章:

    wcf - 具有 WCF 和 X 转发 header 的 AWS ELB

    sql-server-2008 - 使用 Logstash 同步 Mssql 和 Elasticsearch

    elasticsearch - Elasticsearch Java API 中的过滤查询

    python - 二进制搜索 "infinite"序列。我从哪说起呢?

    python - 有效地将每一行的元素相乘

    python - 查找列表中不构成配对的奇数

    amazon-web-services - CloudFormation 为现有 s3 存储桶添加触发器

    python - 为什么Python中列表转换成字典后大小会减小?

    symfony - 使用 Symfony 2.1 的弹性负载均衡器

    caching - 我们可以使用 Elasticsearch 作为缓存来快速检索数据吗?