Estoy anulando FilterClient para poder ver las solicitudes entrantes. Me gustaría alguna forma de obtener una representación de String de la ActionRequest que se pasa. ActionRequest le permite escribir en StreamOuput , que es un tipo de Elasticsearch que es una subclase de OutputStream . Esta publicación SO muestra cómo convertir OutputStream en una cadena, pero me veo obligado a usar StreamOuput debido a la API FilterClient .
¿Cómo obtengo una representación de cadena de ActionRequest o al menos una versión legible que me muestre información útil sobre la solicitud? (Llamar a ActionRequest.toString llama a Object.toString , que no es lo suficientemente bueno para mí).
StreamOutput es una clase abstracta que tiene una subclase llamada OutputStreamStreamOutput . Este último es básicamente un envoltorio alrededor de un OutputStream , por lo que crearía una instancia que envuelva un ByteArrayOutputStream y luego lo usaría en la llamada 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");