如何获取使用 Java API 客户端 (7.16) 构建的 ElasticSearch query/request 的 json 表示?

How to get the json representation of the ElasticSearch query/request that was built with Java API Client (7.16)?

新的Java API 客户端在 7.16 版本的 ES 中发布,Java Rest 客户端被弃用。在已弃用的客户端中可以将查询转换为 JSON。在Kibana查询debugging/tuning/profiling方便

遗憾的是,我在新的客户端文档中没有看到任何提及。所以我的问题是:

是否可以获得通过 Java API 客户端构建的查询的 JSON 表示?它可以是一些实用程序 class 或打印传出请求的客户端的日志配置。

到目前为止我发现的唯一方法是在 co/elastic/clients/transport/rest_client/RestClientTransport.java:215 from elasticsearch-java-7.16.2.jar 并检查 baos 变量的值.

看来即将推出的版本将直接支持此功能:https://discuss.elastic.co/t/elaticsearch-java-client-output-dsl/300952

与此同时,上面的讨论中给出了一个解决方法,但它并不完全有效。这是对我有用的片段:

StringWriter writer = new StringWriter();
JsonGenerator generator = JacksonJsonProvider.provider().createGenerator(writer);
request.serialize(generator, new JacksonJsonpMapper());
generator.flush();
return writer.toString();