package org.xbib.elasticsearch.action.search.helper;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.xcontent.ToXContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.json.JsonXContent;
import java.io.IOException;
import java.io.OutputStream;
/**
* Helper class for Elasticsearch responses
*/
public class BasicSearchResponse {
private SearchResponse searchResponse;
private static byte[] jsonErrorMessage(String message) {
return ("{\"error\":500,\"message\":\"" + message + "\"}").getBytes();
}
public SearchResponse getResponse() {
return searchResponse;
}
public BasicSearchResponse setResponse(SearchResponse response) {
this.searchResponse = response;
return this;
}
public long tookInMillis() {
return searchResponse.getTookInMillis();
}
public long totalHits() {
return searchResponse.getHits().getTotalHits();
}
public BasicSearchResponse toJson(OutputStream out) throws IOException {
if (out == null) {
return this;
}
if (searchResponse == null) {
out.write(jsonErrorMessage("no response"));
return this;
}
XContentBuilder jsonBuilder = new XContentBuilder(JsonXContent.jsonXContent, out);
jsonBuilder.startObject();
searchResponse.toXContent(jsonBuilder, ToXContent.EMPTY_PARAMS);
jsonBuilder.endObject();
jsonBuilder.close();
return this;
}
}