我正在寻求将Elasticsearch索引同步到另一个数据源。我可以获取数据库数据:
select _id, md5 FROM history
在ES中最快的方法是什么?我已经尝试过使用滚动API,但速度似乎极慢,限制为10k:
es.search(index='history', _source=['_id', 'md5'], size=10000))
有更好的方法吗?
答案 0 :(得分:1)
可以使用slices以并行方式使用Scroll API。从理论上讲,它可以使N个切片的速度提高N倍。
滚动缓慢是由于Elasticsearch需要执行full scan。
为了同步Elasticsearch和其他数据库,我建议在Elasticsearch之前有一些文档队列,该文档队列会将文档发送到Elasticsearch和其他组件。这样的文档队列的一个示例是Apache Kafka。据我所知,没有任何机制可以将新的文档更新从Elasticsearch发送到第三方组件。
希望有帮助!