异步插入Elasticsearch

时间:2015-08-01 17:34:56

标签: python asynchronous elasticsearch

在webapp请求/响应周期的中间,我想插入一些可能需要几毫秒或几秒钟的弹性搜索。当然,我不想阻止这个循环。 elasticsearch是否支持异步插入(具有自己的消息队列)?如果是这样,这是怎么做到的?如果没有,你将如何实现这一点(例如,发送到消息队列,然后让一个工作人员除了检查队列并将队列中的东西插入elasticsearch之外什么都不做)?

3 个答案:

答案 0 :(得分:0)

Elasticsearch的{​​{3}}是异步的。您可以使用bulk inserts python API或稍微方便的Elasticsearch.bulk API。

答案 1 :(得分:0)

您需要使用的是用于队列管理的redis服务器。并将所有插入/作业推送到redis。

sudo apt-get install redis-server

然后是http://python-rq.org/docs/

答案 2 :(得分:-1)

本机java客户端默认支持此功能,请参阅.. Java client

我使用的是PHP客户端,但在大型操作方面却非常缓慢。

我们开始使用polyglot(PHP-Java)

PHP应用程序生成json =>将它发送到不同端口上的java应用程序,java ES客户端在Async中转发我们的Json并退出。

我们获得了更好的性能,我们只是花了一些时间/问题来使用maven存储库设置java客户端,但是一旦完成,您将感受到应用程序速度的差异。