Java 如何在elasticsearch中使用关键字类型字段的平均聚合
Hi尝试了一些解决方案,但由于缺乏elasticsearch经验,我得出结论 首先,我有这样的索引Java 如何在elasticsearch中使用关键字类型字段的平均聚合,java,
elasticsearch,Java,
elasticsearch,Hi尝试了一些解决方案,但由于缺乏elasticsearch经验,我得出结论 首先,我有这样的索引 field1 | field2 | **status: 200, response_time: 2** (type of this row keyword) //other rows omitted for brevity 我的业务要求是平均响应时间秒。我想解析状态:200,响应时间:2行,用regexp从中获取时间,然后进行平均 我试着这样做: private RestHighLevelCli
field1 | field2 | **status: 200, response_time: 2** (type of this row keyword)
//other rows omitted for brevity
我的业务要求是平均响应时间秒。我想解析状态:200,响应时间:2
行,用regexp从中获取时间,然后进行平均
我试着这样做:
private RestHighLevelClient client;
public void averaging() {
SearchRequest searchRequest = new SearchRequest("index_name");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
AvgAggregationBuilder aggregation = AggregationBuilders.avg("response_time_average")
.field("doc['Message.keyword']").script(
new Script(
"def value = doc['Message.keyword']; return Integer.parseInt(value.split('regexp'))"));
searchSourceBuilder.aggregation(aggregation);
searchRequest.source(searchSourceBuilder);
try {
SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
Avg agg = search.getAggregations().get("response_time_average");
double value = agg.getValue();
//value returns as _infinity_
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
我没有足够的关于elasticsearch术语的信息。我尝试了很多解决方案,但我认为这一个更接近解决方案
我的elasticservice客户端版本是7.3.1
谢谢:)