我想按地址分组,然后按日期获取最新地址,然后按状态过滤此结果。
ex
{address: 'A', date: '10-10-1991', status: 'sold'}
{address: 'A', date: '10-10-2016', status: 'active'}
{address: 'A', date: '10-10-1981', status: 'sold'}
{address: 'B', date: '10-10-2016', status: 'sold'}
{address: 'B', date: '10-10-1771', status: 'sold'}
{address: 'B', date: '10-10-1991', status: 'active'}
//Getting address with sold status should give me only this record {address: 'B', date: '10-10-2016', status: 'sold'} since most updated one in address A is an active status
我在elasticsearch中有此查询,但它最多只能按地址分组并获取最新日期。我无法按状态过滤此结果。
{
"size": 0,
"aggs": {
"group": {
"terms": {
"field": "address"
},
"aggs": {
"group_docs": {
"top_hits": {
"size": 1,
"sort": [
{
"updated_date": {
"order": "desc"
}
}]
}
}
}
}
}
}
// This query gives me this records
{address: 'A', date: '10-10-2016', status: 'active'}
{address: 'B', date: '10-10-2016', status: 'sold'}
我想使用Elasticsearch从该结果中获得出售状态
使用ES 2.x
使用ES可以做到这一点pipeline aggregations
。首先,我们需要汇总地址。然后,我们使用两种汇总,一种汇总获取最新日期,另一种汇总获取销售状态的最新日期。然后,我们检查两个日期是否都与存储桶选择器聚合匹配。这就是它的样子。
{
"size": 0,
"aggs": {
"unique_address": {
"terms": {
"field": "address",
"size": 10
},
"aggs": {
"latest_date": {
"max": {
"field": "date"
}
},
"filter_sold": {
"filter": {
"term": {
"status": "sold"
}
},
"aggs": {
"latest_sold_date": {
"max": {
"field": "date"
}
}
}
},
"should_we_consider": {
"bucket_selector": {
"buckets_path": {
"my_var1": "latest_date",
"my_var2": "filter_sold>latest_sold_date"
},
"script": "my_var1 == my_var2"
}
}
}
}
}
}
希望这可以帮助!!
问题内容: 我要实现的目标:我不希望查询过滤器过滤“年龄”聚合,并且希望能够对其应用过滤器。 因此,如果我从以下查询开始: 我的聚合“ young_age”将同时被filter_1和filter_2过滤。我不希望我的汇总被filter_1过滤。 在查看文档时,我认为全局聚合可以解决我的问题,因此我编写了以下查询: 但是然后elasticsearch抱怨我的filter_2: “”“在[global
问题内容: 简短的问题:如果我有每个存储区的top_hits的汇总,如何在结果结构中求和特定值? 细节: 我有许多记录,每个商店包含一定数量。我想获取每个商店的所有最新记录的总和。 为了获得每个商店的最新记录,我创建以下聚合: 假设我有两个商店,每个商店有两个数量用于两个不同的时间戳。这是该聚合的结果: 我现在想在ElasticSearch中进行汇总,以汇总这些存储桶中的总和。在示例数据中,总和超
问题内容: 我正在尝试过滤存储桶中的嵌套聚合。 对应: 索引数据: 我正在使用此查询和聚合定义 我从聚合结果中得到的是: 我在筛选存储桶列表时遇到了麻烦,因为它们只能提供所提供的事件ID,因此结果应类似于: 问题答案: 您快到了,只需要在聚合中添加过滤器即可,如下所示: 原因是您的查询将正确选择具有指定事件ID的嵌套事件的所有文档,但是,汇总将对所有选定文档中的所有嵌套事件进行处理。因此,您还需要
我使用这篇Baeldung文章为Spring 2.0.4应用程序添加了执行器支持。在第4.4节中,它谈到 你们中有谁知道关于创建这种聚合的教程、示例或其他文档吗? 更多信息我在我的应用程序中有一个服务,它依赖于几个子组件。只有当所有这些子组件都关闭时,服务本身才被认为关闭。只要有一个站起来,那么服务就站起来了。目前使用的是正常的机制,如果其中一个子组件宕机,则将服务器标记为宕机。 似乎我想使用,但
问题内容: 想象一下,我有两种记录:一个存储桶和一个项目,其中存储在存储桶中的项目,而存储桶中的项目可能相对较少(通常不超过4个,从不超过10个)。这些记录被压缩为一个(具有更多存储桶信息的项目),并放置在Elasticsearch中。我要解决的任务是通过依赖项属性的过滤查询一次找到500个存储桶(最大),其中包含所有相关项,而我受困于限制/抵消聚合。我该如何执行此类任务?我看到聚合使我可以控制相
我已经在按\u score desc排序的查询部分中获得了所需的查询结果。现在我需要提取每个文档的3个字段。我想实现如下目标: 我刚刚试过: 1)使用折叠删除重复的值 但问题是它只会保留filed1的不同值,而忽略field 2和field 3的值。例如,我们有2条记录,如下所示: 使用此方法,我们只能获得一条记录,因为它们具有相同的field1值。我想要这三个字段的不同组合值。我们可以使用int