use of org.apache.zeppelin.interpreter.InterpreterResult in project zeppelin by apache.
the class ElasticsearchInterpreter method buildAggResponseMessage.
private InterpreterResult buildAggResponseMessage(Aggregations aggregations) {
// Only the result of the first aggregation is returned
//
final Aggregation agg = aggregations.asList().get(0);
InterpreterResult.Type resType = InterpreterResult.Type.TEXT;
String resMsg = "";
if (agg instanceof InternalMetricsAggregation) {
resMsg = XContentHelper.toString((InternalMetricsAggregation) agg).toString();
} else if (agg instanceof InternalSingleBucketAggregation) {
resMsg = XContentHelper.toString((InternalSingleBucketAggregation) agg).toString();
} else if (agg instanceof InternalMultiBucketAggregation) {
final Set<String> headerKeys = new HashSet<>();
final List<Map<String, Object>> buckets = new LinkedList<>();
final InternalMultiBucketAggregation multiBucketAgg = (InternalMultiBucketAggregation) agg;
for (final MultiBucketsAggregation.Bucket bucket : multiBucketAgg.getBuckets()) {
try {
final XContentBuilder builder = XContentFactory.jsonBuilder();
bucket.toXContent(builder, null);
final Map<String, Object> bucketMap = JsonFlattener.flattenAsMap(builder.string());
headerKeys.addAll(bucketMap.keySet());
buckets.add(bucketMap);
} catch (final IOException e) {
logger.error("Processing bucket: " + e.getMessage(), e);
}
}
final StringBuffer buffer = new StringBuffer();
final String[] keys = headerKeys.toArray(new String[0]);
for (final String key : keys) {
buffer.append("\t" + key);
}
buffer.deleteCharAt(0);
for (final Map<String, Object> bucket : buckets) {
buffer.append("\n");
for (final String key : keys) {
buffer.append(bucket.get(key)).append("\t");
}
buffer.deleteCharAt(buffer.length() - 1);
}
resType = InterpreterResult.Type.TABLE;
resMsg = buffer.toString();
}
return new InterpreterResult(InterpreterResult.Code.SUCCESS, resType, resMsg);
}
use of org.apache.zeppelin.interpreter.InterpreterResult in project zeppelin by apache.
the class ElasticsearchInterpreter method buildAggResponseMessage.
private InterpreterResult buildAggResponseMessage(List<AggWrapper> aggregations) {
final InterpreterResult.Type resType = InterpreterResult.Type.TABLE;
String resMsg = "";
final Set<String> headerKeys = new HashSet<>();
final List<Map<String, Object>> buckets = new LinkedList<>();
for (final AggWrapper aggregation : aggregations) {
final Map<String, Object> bucketMap = JsonFlattener.flattenAsMap(aggregation.getResult());
headerKeys.addAll(bucketMap.keySet());
buckets.add(bucketMap);
}
final StringBuffer buffer = new StringBuffer();
final String[] keys = headerKeys.toArray(new String[0]);
for (final String key : keys) {
buffer.append("\t" + key);
}
buffer.deleteCharAt(0);
for (final Map<String, Object> bucket : buckets) {
buffer.append("\n");
for (final String key : keys) {
buffer.append(bucket.get(key)).append("\t");
}
buffer.deleteCharAt(buffer.length() - 1);
}
resMsg = buffer.toString();
return new InterpreterResult(InterpreterResult.Code.SUCCESS, resType, resMsg);
}
use of org.apache.zeppelin.interpreter.InterpreterResult in project zeppelin by apache.
the class ElasticsearchInterpreter method processSearch.
/**
* Processes a "search" request.
*
* @param urlItems Items of the URL
* @param data May contains the JSON of the request
* @param size Limit of result set
* @param interpreterContext Instance of the context
* @return Result of the search request, it contains a tab-formatted string of the matching hits
*/
private InterpreterResult processSearch(String[] urlItems, String data, int size, InterpreterContext interpreterContext) {
if (urlItems.length > 2) {
return new InterpreterResult(InterpreterResult.Code.ERROR, "Bad URL (it should be /index1,index2,.../type1,type2,...)");
}
final ActionResponse response = searchData(urlItems, data, size);
addAngularObject(interpreterContext, "search", (response.getAggregations() != null && response.getAggregations().size() > 0) ? response.getAggregations() : response.getHits());
return buildResponseMessage(response);
}
use of org.apache.zeppelin.interpreter.InterpreterResult in project zeppelin by apache.
the class ElasticsearchInterpreter method processGet.
/**
* Processes a "get" request.
*
* @param urlItems Items of the URL
* @param interpreterContext Instance of the context
* @return Result of the get request, it contains a JSON-formatted string
*/
private InterpreterResult processGet(String[] urlItems, InterpreterContext interpreterContext) {
final String[] indexTypeId = getIndexTypeId(urlItems);
if (indexTypeId == null) {
return new InterpreterResult(InterpreterResult.Code.ERROR, "Bad URL (it should be /index/type/id)");
}
final ActionResponse response = elsClient.get(indexTypeId[0], indexTypeId[1], indexTypeId[2]);
if (response.isSucceeded()) {
final JsonObject json = response.getHit().getSourceAsJsonObject();
final String jsonStr = gson.toJson(json);
addAngularObject(interpreterContext, "get", json);
return new InterpreterResult(InterpreterResult.Code.SUCCESS, InterpreterResult.Type.TEXT, jsonStr);
}
return new InterpreterResult(InterpreterResult.Code.ERROR, "Document not found");
}
use of org.apache.zeppelin.interpreter.InterpreterResult in project zeppelin by apache.
the class FlinkInterpreterTest method testSimpleStatement.
@Test
public void testSimpleStatement() {
InterpreterResult result = flink.interpret("val a=1", context);
result = flink.interpret("print(a)", context);
assertEquals("1", result.message().get(0).getData());
}
Aggregations