Как отследить запрос json, отправленный в Elasticsearch через клиента astic4s?
Скажите, что я использую такой код:
ElasticClient client = ...
client.execute{search in "places"->"cities" query "paris" start 5 limit 10}
Как узнать, какой запрос json был отправлен в Elasticsearch?
2 ответа
Решение
В Elastic4s 1.6.2 вы можете использовать класс show typec для нескольких запросов, чтобы получить JSON-эквивалент.
Это довольно просто.
val req = search in "index" / "type" query "kate bush"
logger.debug(s"Search request ${req.show}")
.show
Метод будет отображать вывод в формате JSON. Это работает на большинстве типов запросов.
В Elastic4s 5.2.0+ вы используете show
метод на клиенте.
val req = search("index" / "type").query("kate bush")
client.show(req)
Я не нашел встроенной функции для отслеживания каждого запроса через клиента astic4s, но есть _builder
переменная в astic4s, которую можно использовать для печати запроса перед его выполнением:
println(search in "places"->"cities" query "paris" start 5 limit 10 _builder) toString
{
"from" : 5,
"size" : 10,
"query" : {
"query_string" : {
"query" : "paris"
}
}
}