elasticsearch:将StreamOutput转换为String

lf2*_*215 7 java elasticsearch java-stream

我压倒一切,FilterClient所以我可以看到收到的请求.我想用某种方式来String表示ActionRequest传入的内容.ActionRequest让你写一个StreamOuput,这是一个Elasticsearch类型,它是一个子类OutputStream.这篇SO帖子展示了如何转换OutputStream为String,但StreamOuput由于FilterClientAPI ,我不得不使用它.

如何获得字符串表示ActionRequest或至少是一个可读的版本,它将向我显示有关请求的有用信息?(拨打ActionRequest.toString电话Object.toString,对我来说不够好.)

Val*_*Val 5

StreamOutput是一个抽象类,它有一个名为OutputStreamStreamOutput. 后者基本上是围绕 a 的包装器OutputStream,因此您将创建一个包装 a 的实例,ByteArrayOutputStream然后在ActionRequest.writeTo()调用中使用它。

// in your override doExecute method, add this:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStreamStreamOutput osso = new OutputStreamStreamOutput(baos);

request.writeTo(osso);
String requestAsString = baos.toString("UTF-8");
Run Code Online (Sandbox Code Playgroud)