在webapp请求/响应周期的中间,我想插入一些可能需要几毫秒或几秒钟的弹性搜索。当然,我不想阻止这个循环。 elasticsearch是否支持异步插入(具有自己的消息队列)?如果是这样,这是怎么做到的?如果没有,你将如何实现这一点(例如,发送到消息队列,然后让一个工作人员除了检查队列并将队列中的东西插入elasticsearch之外什么都不做)?
答案 0 :(得分:0)
Elasticsearch的{{3}}是异步的。您可以使用bulk inserts python API或稍微方便的Elasticsearch.bulk API。
答案 1 :(得分:0)
您需要使用的是用于队列管理的redis服务器。并将所有插入/作业推送到redis。
sudo apt-get install redis-server
答案 2 :(得分:-1)
本机java客户端默认支持此功能,请参阅.. Java client
我使用的是PHP客户端,但在大型操作方面却非常缓慢。
我们开始使用polyglot(PHP-Java)
PHP应用程序生成json =>将它发送到不同端口上的java应用程序,java ES客户端在Async中转发我们的Json并退出。
我们获得了更好的性能,我们只是花了一些时间/问题来使用maven存储库设置java客户端,但是一旦完成,您将感受到应用程序速度的差异。