阻塞式和异步式客户端
编辑阻塞式和异步式客户端
编辑API 客户端有两种类型:阻塞式和异步式。异步式客户端上的所有方法都返回标准的CompletableFuture
。
根据您的需要,这两种类型可以同时使用,它们共享相同的传输对象。
ElasticsearchTransport transport = ... // Synchronous blocking client ElasticsearchClient client = new ElasticsearchClient(transport); if (client.exists(b -> b.index("products").id("foo")).value()) { logger.info("product exists"); } // Asynchronous non-blocking client ElasticsearchAsyncClient asyncClient = new ElasticsearchAsyncClient(transport); asyncClient .exists(b -> b.index("products").id("foo")) .whenComplete((response, exception) -> { if (exception != null) { logger.error("Failed to index", exception); } else { logger.info("Product exists"); } });
虽然我们不会深入探讨 Java 中的异步编程细节,但请记住要处理异步任务的失败。忽略它们很容易导致错误被忽视。
上述示例的源代码可以在 Java API 客户端测试 中找到。