阻塞和异步客户端
编辑阻塞和异步客户端编辑
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 客户端测试 中找到。