我想执行一个术语聚合,并在执行脚本操作后的每个结果桶中获取命中字段。
例如,如果这些是文档:
{"age": 15, "firstName": "Dana", "lastName": "Miller"}
{"age": 15, "firstName": "Michelle", "lastName": "Bob"}
{"age": 32, "firstName": "Mary", "lastName": "Smith"}
{"age": 32, "firstName": "Anna", "lastName": "Taylor"}
聚合按“年龄”字段进行,脚本为:“return‘doc['firstName']”doc['lastName']”
结果应该是:
铲斗1(年龄:15岁):
这在elasticsearch中可能吗?
编辑:
此外,我正在寻找一种在一个bucket中多次命中的情况下运行脚本的方法。例如,如果我们使用上面的文档和“年龄”字段的术语聚合,我可以通过以下方式获得桶中命中数的结果吗?
桶1(15岁):
Bucket2(32岁):
在ES中可能吗?
非常感谢。
我想下面的查询可以帮助您。
{
"size": 0,
"aggs": {
"group By age": {
"terms": {
"field": "age"
},
"aggs": {
"top hits": {
"top_hits": {
"script_fields": {
"Name": {
"script": "doc['firstName'].value + ' ' + doc['lastName'].value "
}
}
}
}
}
}
}
}
希望这有帮助!!
问题内容: 我正在尝试创建一个脚本字段,该脚本字段将计算两个时间戳之间的时间差,然后在该脚本字段上聚合一个。 我首先尝试: 在合计平均值下产生价值。 然后我尝试了: 生成了一条错误消息,内容为:“在映射中找不到[timedifference]的字段” 问题答案: 简单地将脚本移到聚合上怎么样?
我想根据top hits聚合中第一个元素所拥有的属性,从terms聚合中订购Bucket。 我的尽力而为查询如下(有语法错误): 有人知道如何做到这一点吗? 例子: 按“a”分组,按“id”(desc)排序存储桶,并按“b”(desc)排序最热门的内容,将给出:
问题内容: 我想在字段上使用stats或extended_stats聚合,但是找不到完成此操作的任何示例(即,似乎只能将聚合与实际文档字段一起使用)。 是否有可能计算出“元数据”在ElasticSearch查询响应每个命中字段请求集合(例如,,,,等等)? 我假设答案是“否”,因为未对类似字段进行索引… 问题答案: 注意:就最新版本的Elasticsearch而言,原始答案现在已过时。使用Groo
问题内容: 我想按top_hit的doc.score订购存储桶。我当前的实现如下。 这是错误的,因为存储桶是按其最高得分而不是其source_priority文档最高得分排序的。有办法解决这个问题吗? 问题答案: 我遇到了同样的问题,而解决问题的方法是在docs得分上引入子汇总。然后在我的外部聚合中,我按max_score聚合的名称排序。 我遵循了此链接上的指示: http://www.elast
问题内容: 我目前有类似的东西: 但是,myfield的值为“ alpha 1.0”,“ alpha 2.0”,“ beta 1.0”。现在,我只想聚合值“ alpha”,“ beta”。我怎么做?我试过了: 但我想这里没有拆分功能。欢迎任何建议! 问题答案: 我设法通过粘贴在问题中的链接来完成此任务:
问题内容: 我想将数据汇总到另一个字段中,也想根据名称以排序方式获取汇总数据。 我的数据是: 我的查询: 我的映射是: 我正在根据分组记录的相关性平均值来获取数据。现在,我想要的是第一个基于groupid的记录,然后在每个存储桶中根据名称字段对数据进行排序。 我想对一个字段进行分组,然后在对分区进行分组之后,对另一个字段进行排序。这是样本数据。 还有其他字段,例如created_on,update