elasticsearch:将StreamOutput转换为String

我重写FilterClient以便可以看到传入的请求。 我想办法让一个String中的代表性ActionRequest这是一个在过去。 ActionRequest让你写一个的StreamOuput ,这是一个Elasticsearch类型是子类OutputStream 。 这个SO帖子展示了如何将OutputStream转换为字符串,但由于FilterClient API,我不得不使用StreamOuput

我如何获得ActionRequest的字符串表示或至少一个可读的版本,它会显示有关请求的有用信息? (调用ActionRequest.toString调用Object.toString ,这对我来说不够好。)


StreamOutput是一个抽象类,它有一个名为OutputStreamStreamOutput的子类。 后者基本上是一个OutputStream的包装器,因此您需要创建一个包装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");
链接地址: http://www.djcxy.com/p/78453.html

上一篇: elasticsearch: convert StreamOutput to String

下一篇: Java interop: pass an OutputStream argument and get back a String