If you build on the JVM and want to use Qdrant, the official client is io.qdrant:client — and it's built for Java. Every call returns a ListenableFuture, requests are assembled with protobuf builders, and it drags a gRPC/Netty stack onto your classpath. From Kotlin, that means fighting the language:

// official Java client, from Kotlin

val future: ListenableFuture<UpdateResult> = client.upsertAsync("articles", points)

val result = future.get() // block, or bolt on a future→coroutine bridge yourself

Enter fullscreen mode