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