在quantitative sizing上观看ES网络研讨会之后,我编写了一个使用多处理和elasticsearch-py库的python脚本,对来自30个EC2实例的240天遥测数据进行helpers.bulk
索引调用;在Kinbana监控仪表板中我可以看到大约4000万份文档。
批量调用来自与安装了ElasticSearch的实例不同的EC2实例。
我的困惑是ES如何处理这些批量调用。它是否将数据存储在本地某处,然后在某些后台进程中对其进行索引?
我的脚本在一夜之间成功退出,但在监控仪表板中,我看到堆位于97%
,并且有8个或更多活动请求,而且是7个小时之后。
我仔细检查了netstat -naltp
端口上活动连接上的安全组和9200
,它们都来自实例本身,这意味着它是一些后台进程。
奇怪的是, Disk Available 每隔几分钟就会增加,所以我最好的猜测是:
批量api将输入存储在磁盘上的某个位置,稍后将它们拉入进行索引,从而执行一些压缩和优化。
我对本论文的唯一支持是 Wait For Active Shards param,但我并没有使用它!
总之,问题是:批量API在短时间内发送数百万个文档时如何工作?