如何在Elasticsearch中获取所有项目的特定值

时间:2019-05-10 19:56:20

标签: elasticsearch

我正在寻求将Elasticsearch索引同步到另一个数据源。我可以获取数据库数据:

select _id, md5 FROM history

在ES中最快的方法是什么?我已经尝试过使用滚动API,但速度似乎极慢,限制为10k:

es.search(index='history', _source=['_id', 'md5'], size=10000))

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

可以使用slices以并行方式使用Scroll API。从理论上讲,它可以使N个切片的速度提高N倍。

滚动缓慢是由于Elasticsearch需要执行full scan

为了同步Elasticsearch和其他数据库,我建议在Elasticsearch之前有一些文档队列,该文档队列会将文档发送到Elasticsearch和其他组件。这样的文档队列的一个示例是Apache Kafka。据我所知,没有任何机制可以将新的文档更新从Elasticsearch发送到第三方组件。

希望有帮助!