Skip to content

Instantly share code, notes, and snippets.

@windoze
Last active August 3, 2018 20:55
Show Gist options
  • Save windoze/2dcc5e73bc1e77d2a6f673f006167818 to your computer and use it in GitHub Desktop.
Save windoze/2dcc5e73bc1e77d2a6f673f006167818 to your computer and use it in GitHub Desktop.
ElasticSearch Java REST Client Vert.x adaptor
fun <Req, Resp> asFuture(func: (Req, ActionListener<Resp>, Array<out Header>) -> Unit, req: Req, vararg headers: Header) = Future.future<Resp>().apply {
func(req, object : ActionListener<Resp> {
override fun onFailure(e: Exception?) {
fail(e)
}
override fun onResponse(response: Resp?) {
complete(response)
}
}, headers)
}
fun RestHighLevelClient.bulkAsync(request: BulkRequest, vararg headers: Header) = asFuture(this::bulkAsync, request, *headers)
fun RestHighLevelClient.getAsync(request: GetRequest, vararg headers: Header) = asFuture(this::getAsync, request, *headers)
fun RestHighLevelClient.multiGetAsync(request: MultiGetRequest, vararg headers: Header) = asFuture(this::multiGetAsync, request, *headers)
fun RestHighLevelClient.existsAsync(request: GetRequest, vararg headers: Header) = asFuture(this::existsAsync, request, *headers)
fun RestHighLevelClient.indexAsync(request: IndexRequest, vararg headers: Header) = asFuture(this::indexAsync, request, *headers)
fun RestHighLevelClient.updateAsync(request: UpdateRequest, vararg headers: Header) = asFuture(this::updateAsync, request, *headers)
fun RestHighLevelClient.deleteAsync(request: DeleteRequest, vararg headers: Header) = asFuture(this::deleteAsync, request, *headers)
fun RestHighLevelClient.searchAsync(request: SearchRequest, vararg headers: Header) = asFuture(this::searchAsync, request, *headers)
fun RestHighLevelClient.multiSearchAsync(request: MultiSearchRequest, vararg headers: Header) = asFuture(this::multiSearchAsync, request, *headers)
fun RestHighLevelClient.searchScrollAsync(request: SearchScrollRequest, vararg headers: Header) = asFuture(this::searchScrollAsync, request, *headers)
fun RestHighLevelClient.clearScrollAsync(request: ClearScrollRequest, vararg headers: Header) = asFuture(this::clearScrollAsync, request, *headers)
val client = RestHighLevelClient(RestClient.builder(HttpHost("localhost", 9200, "http")))
val getRequest = GetRequest(
"someindex",
"sometype",
"someid")
val resp = client.getAsync(getRequest).await()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment