我想在JAVA API中编写elasticsearch聚合代码,以查找字段折叠和结果分组。
json聚合代码如下所示,我从elasticsearch文档中获得了这些代码
“dedup\u by\u score”聚合具有称为“top\u hit”聚合的子聚合,并将此聚合用于桶排序。
... some query
"aggs": {
"dedup_by_score": {
"terms": {
"field": "keyword",
"order": {
"top_hit": "desc"
},
"size": 10
},
"aggs": {
"top_hit": {
"max": {
"script": {
"source": "_score"
}
}
}
}
}
}
我想将这个json查询转换为JAVA
这是我已经在JAVA中尝试过的
AggregationBuilder aggregation = AggregationBuilders.terms("dedup_by_score")
.field("keyword")
.order(BucketOrder.aggregation("top_hit", false))
.size(10)
.subAggregation(
AggregationBuilders.topHits("top_hit")
.subAggregation(
AggregationBuilders.max("max").script(new Script("_score"))
)
);
但是我从Elasticsearch得到了如下错误
{
"type":"aggregation_initialization_exception",
"reason":"Aggregator [top_hit] of type [top_hits] cannot accept sub-aggregations"
}
如何修复此Java代码?我现在使用Elasticsearch 6.7.1版本。
提前谢谢
热门AGG不能有子AGG。尝试以下操作:
AggregationBuilder aggregation = AggregationBuilders.terms("dedup_by_score")
.field("keyword")
.order(BucketOrder.aggregation("top_hit", false))
.size(10)
.subAggregation(
AggregationBuilders.max("max").script(new Script("_score"))
.subAggregation(
AggregationBuilders.topHits("top_hit")
)
);
我有3个级别的父/子结构。假设: 公司- 由于这里经常更新可用性(以及员工),所以我选择对嵌套使用父/子结构。搜索功能工作正常(所有文档都在正确的碎片中)。 现在我想对这些结果进行排序。按公司(第1级)的元数据对它们进行排序很容易。但我也需要按第3级(可用性)进行排序。 我想要按以下顺序排列的公司列表: 与给定ASC位置的距离 评级DESC 最快可用性ASC 例如: A公司距离我们5英里,评分为4
框架集合由搜索查询选择的所有数据。框架中包含许多构建块,有助于构建复杂的数据描述或摘要。聚合的基本结构如下所示 - 有以下不同类型的聚合,每个都有自己的目的 - 指标聚合 这些聚合有助于从聚合文档的字段值计算矩阵,并且某些值可以从脚本生成。 数字矩阵或者是平均聚合的单值,或者是像一样的多值。 平均聚合 此聚合用于获取聚合文档中存在的任何数字字段的平均值。 例如, 请求正文 响应 如果该值不存在于一
Elasticsearch版本:2.3.3 基本上,标题说明了一切。如果二个嵌套聚合下使用reverse_nested,尽管文档似乎通过限定范围(请参阅结果中的最后一个字段),但其后面的聚合不会以某种方式工作。 这里我准备了一个例子——一个文档是一个学生的注册日期和考试历史。 映射: 试验文件: 聚合查询(无实际意义): 结果是: ...您可以在其中看到聚合“newest_exam_date”不起
问题内容: 我似乎无法以某种方式收到包含我的聚合的响应… 使用curl可以按预期工作: 我得到答复: 但是在rails中使用代码: 并在浏览器中呈现 我得到一个空的答复: 如何在这里打印出卷曲的聚集体? 问题答案: 我也在为此而苦苦挣扎,但是现在我发现了如何获得聚合结果。 如果您将 elasticsearch-rails 与 elasticsearch-model gem一起使用,则在 模型上 运
我知道Elasticsearch支持带bucketing的子聚合(其中bucketing聚合可以有bucketing或metric子聚合)。使用度量聚合无法进行子聚合。也许这是有道理的,但这里是用例。 作为家长,我有术语聚合。并将另一个术语聚合作为它的子项。子术语具有类型为top\u hits的子聚合
我想在我的java应用程序中获得聚合。 首先,我用curl构造了REST查询。它看起来像: 结果和我预期的一样 之后我在java中创建了一些代码 问题是: 如何获取当前bucket项的“contract\u sum”聚合值? 当我在IntelliJ Idea中使用调试工具时,它似乎可以 请帮助我的代码示例。