在ES的7.16版本中发布了一个新的Java API客户端,Java Rest客户端被弃用。在弃用的客户端中可以将查询转换为JSON。这便于在Kibana中调试/调优/分析查询。
不幸的是,我在新客户端文档中没有看到任何提及这一点的内容。所以我的问题是:
是否可以通过Java API客户端获得查询的JSON表示?它可以是打印传出请求的客户端的一些实用程序类或日志配置。
在ES的7.16版本中发布了一个新的Java API客户端,Java Rest客户端被弃用。在弃用的客户端中可以将查询转换为JSON。这便于在Kibana中调试/调优/分析查询。
不幸的是,我在新客户端文档中没有看到任何提及这一点的内容。所以我的问题是:
是否可以通过Java API客户端获得查询的JSON表示?它可以是打印传出请求的客户端的一些实用程序类或日志配置。
4条答案
按热度按时间ttp71kqs1#
看起来此功能将在即将推出的版本中直接支持:https://discuss.elastic.co/t/elaticsearch-java-client-output-dsl/300952
在此期间,上面的讨论中给出了一个解决方案,但它并不完全有效。下面是一个适用于我的片段:
g6ll5ycj2#
到目前为止,我发现的唯一方法是在elasticsearch-java-7.16.2.jar中的co/elastic/clients/transport/rest_client/RestClientTransport.java:215中放置一个条件断点,并检查baos变量的值。
sr4lhrrt3#
作为下面提到的等待pull request的临时方法,我使用了
它没有打印任何漂亮的东西,但它涵盖了我的测试字符串比较用例。
d5vmydt94#
在我的例子中,@卡梅隆answer不起作用,因为只返回了查询的一部分。除此之外,我还需要序列化日期。
所以我最后想到了下一个解决方案: