0

看这个例子

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

是否有一个选项可以将日志记录到 client.execute 以记录客户端所做的所有操作(索引、搜索等)?

我看到了这个答案,但我不想做类似的事情:

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

我希望客户端根据日志记录级别记录所有内容

4

1 回答 1

0

您可以定义自己的 ElasticClient,并具有覆盖执行功能

object MyElasticClientFactory {
     def fromClient(client: Client): ElasticClient = new ElasticClient {
     def close(): Unit = client.close()
     def java: Client = client

     override def execute[T, R, Q](request: T)(implicit executable: Executable[T, R, Q]): Future[Q] = {
         // TODO your logging here
         super.execute(request)
     }

}

查看 TcpClient 以供参考https://github.com/sksamuel/elastic4s/blob/9a4074b6ff5616b648801352b4c3629cd0fc9020/elastic4s-tcp/src/main/scala/com/sksamuel/elastic4s/TcpClient.scala

于 2017-04-03T14:31:03.703 回答