How track json request sent to Elasticsearch via elastic4s client?

3.1k views Asked by At

Say that I use such code:

ElasticClient client = ...
client.execute{search in "places"->"cities" query "paris" start 5 limit 10}

How to see what json request was been sent to Elasticsearch?

2

There are 2 answers

0
sksamuel On BEST ANSWER

In Elastic4s 1.6.2 you can use the show typeclass on a number of requests to get the JSON equivilent.

It's pretty straightforward.

val req = search in "index" / "type" query "kate bush"
logger.debug(s"Search request ${req.show}")

The .show method will render JSON output. It works on most of the request types.

In Elastic4s 5.2.0+, you use the show method on the client.

val req = search("index" / "type").query("kate bush")
client.show(req)
4
Cherry On

I did not find build-in feature to track every request via elastic4s client, but there is a _builder variable in elastic4s which you can use to print request before execute it:

println(search in "places"->"cities" query "paris" start 5 limit 10 _builder) toString

{
  "from" : 5,
  "size" : 10,
  "query" : {
    "query_string" : {
      "query" : "paris"
    }
  }
}