我JSON
对 Elasticsearch有以下查询(工作正常)-
{
"aggs": {
"by_emotion": {
"terms": {"field": "classifier_emotion"},
"aggs": {
"avg_probability": {
"avg": {"field": "classifier_emotion_probability"}
},
"sum_probability": {
"sum": {"field": "classifier_emotion_probability"}
}
}
}
}
}
我试图使用 Java API 重写它 -
public AggregationBuilder<TermsBuilder> getClassifierAggregation(String classifierName) {
String probailityField = classifierName + "_probability";
return AggregationBuilders.terms("by_class")
.subAggregation(
AggregationBuilders.terms("classifier").field(classifierName)
)
.subAggregation(
AggregationBuilders.avg("avg_probability").field(probailityField)
)
.subAggregation(
AggregationBuilders.sum("sum_probability").field(probailityField)
);
}
然后将其用作 -
SearchRequestBuilder request = elasticsearchClient.prepareSearch(index)
.setSearchType(SearchType.QUERY_THEN_FETCH)
.setFrom(0)
.setSize(0)
.addAggregation(getClassifierAggregation(classifierName));
SearchResponse response = request.execute().actionGet();
但我收到以下异常 -
org.elasticsearch.search.aggregations.AggregationExecutionException: could not find the appropriate value context to perform aggregation [by_class]
我究竟做错了什么?
我说的方法写错了。这是正确的一个——
public TermsBuilder getClassifierAggregation(String classifierName) {
String probailityField = classifierName + "_probability";
return AggregationBuilders.terms("by_class").field(classifierName)
.subAggregation(
AggregationBuilders.avg("avg_probability").field(probailityField)
)
.subAggregation(
AggregationBuilders.sum("sum_probability").field(probailityField)
);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句