我正在使用Java来查询Elasticearch;我想将查询的数据导出为CSV文件。我为这事伤透了脑筋..请问有没有人能帮我解一下这个代码?我会很感激的。
这是我用Java编写的查询代码
try {
RangeQueryBuilder rangeQ = QueryBuilders
.rangeQuery("@timestamp")
.gte("1663632000000")
.lte("1663804799000")
.format("epoch_millis");
TermsAggregationBuilder termsAggregation = AggregationBuilders
.terms("term_by_client_id")
.field("labels.client_id")
.size(100000)
.minDocCount(1);
termsAggregation
.subAggregation(
AggregationBuilders
.sum("sum_by")
.field("labels.row_count")
);
termsAggregation
.subAggregation(
AggregationBuilders
.terms("term_By_job")
.field("labels.job_id")
);
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("*itm*");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(rangeQ);
searchSourceBuilder.aggregation(termsAggregation);
// searchSourceBuilder.size(100000);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
System.out.println(searchResponse);
Aggregations aggregations = searchResponse.getAggregations();
Map<String, Aggregation> aggregationMap = aggregations.asMap();
for (Map.Entry<String, Aggregation> each : aggregationMap.entrySet()){
System.out.println((each.getValue()));
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
查询的输出如下所示
“Buckets”:[{“key”:“1741433”,“DOC_COUNT”:1},{“KEY”:“1741435”,“DOC_COUNT”:1},{“KEY”:“1741436”,“DOC_COUNT”:1},{“KEY”:“1741440”,“DOC_COUNT”:1},{“KEY”:“1741441”,“DOC_COUNT”:1},{“Key”:“1741442”,“DOC_COUNT”:1},{“key”:“1741443”,“DOC_COUNT”:1},{“KEY”:“1741444”,“DOC_COUNT”:1},{“KEY”:“1741450”,“DOC_COUNT”:1},{“KEY”:“1741451”,“DOC_COUNT”:1}]},“SUM#SUM_BY”:{“Value”:1.0951264E7}},{“KEY”:“86206”,“DOC_COUNT”:383,“sterms#term_By_job”:{“doc_count_error_upper_bound”:6,“SUM_OTHER_DOC_COUNT”:361,“存储桶”:[{“KEY”:“1211310”,“DOC_COUNT”:3},{“KEY”:“1211316”,“DOC_COUNT”:3},{“KEY”:“1210943”,“DOC_COUNT”:2},{“Key”:“1210945”,“DOC_COUNT”:2},{“key”:“1210946”,“DOC_COUNT”:2},{“KEY”:“1210947”,“DOC_COUNT”:2},{“KEY”:“1210948”,“DOC_COUNT”:2},{“KEY”:“1210949”,“DOC_COUNT”:2},{“KEY”:“1210987”,“DOC_COUNT”:2},{“KEY”:“1211010”,“DOC_COUNT”:2}]}
请帮助我在这里与这个代码,将不胜感激。谢谢。
1条答案
按热度按时间pinkon5k1#
这不完全是你想要的,但我认为它可能会对你有帮助,所以我建议你这样做。
您可以像这样使用这个lightweight tool
然后使用Java库或任何适合您的在线工具将json转换为CSV。