ElasticSearch Java API异步写入

3

我相对于ElasticSearch来说是个新手,我注意到当你启动Elasticsearch Java客户端时,它会启动大量线程(约50个)。

我试图利用这一点,但找不到使写入(索引)到ES变成异步的方法。

官方API建议使用:

IndexResponse response = client.prepareIndex(indexName, documentName)
            .setSource(mapper.writeValueAsString(data))
            .get();

即使我在新线程上运行它,它仍然会阻塞,因为它在等待响应,其中包含新创建的ID和更多信息。
是否可能以异步方式写入ES,而无需创建另外50个本地线程来匹配ES的50个内部线程?
1个回答

3
如果有人遇到了这个问题,解决方法是使用.execute(),它会返回一个ListenableActionFuture<Response>
例如:
client.prepareIndex(indexName, documentName)
        .setSource(mapper.writeValueAsString(data))
        .execute();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接