{
"_index": "f2016-07-17",
"_type": "trkvjadsreqpxl.gif",
"_id": "AVX2N3dl5siG6SyfyIjb",
"_score": 1,
"_source": {
"time": "1468714676424",
"meta": {
"cb_id": 25681,
"mt_id": 649,
"c_id": 1592,
"revenue": 2.5,
"mt_name": "GMS-INAPP-EN-2.5",
"c_description": "COULL-INAPP-EN-2.5",
"domain": "wv.inner-active.mobi",
"master_domain": "649###wv.inner-active.mobi",
"child_domain": "1592###wv.inner-active.mobi",
"combo_domain": "25681###wv.inner-active.mobi",
"ip": "52.42.87.73"
}
}
}
我想在多个字段上进行日期直方图/范围聚合,并将结果存储在其他集合/索引中。因此,我可以在小时范围内使用查询/聚合使doc_count和。
聚合如下:
{
"aggs": {
"hour":{
"date_histogram": {
"field": "time",
"interval": "hour"
},
"aggs":{
"hourly_M_TAG":{
"terms":{
"field":"meta.mt_id"
}
}
}....
}
}
}
结果不出所料:
"aggregations": {
"hour": {
"buckets": [
{
"key_as_string": "2016-07-17T00:00:00.000Z",
"key": 1468713600000,
"doc_count": 94411750,
"hourly_M_TAG": {
"doc_count_error_upper_bound": 1485,
"sum_other_doc_count": 30731646,
"buckets": [
{
"key": 10,
"doc_count": 10175501
},
{
"key": 649,
"doc_count": 200000
}....
]
}
},
{
"key_as_string": "2016-07-17T01:00:00.000Z",
"key": 1468717200000,
"doc_count": 68738743,
"hourly_M_TAG": {
"doc_count_error_upper_bound": 2115,
"sum_other_doc_count": 22478590,
"buckets": [
{
"key": 559,
"doc_count": 8307018
},
{
"key": 649,
"doc_count" :100000
}...
假设我解析了响应,并尝试将结果存储在其他索引/集合中。
存储聚合结果的最佳方式是什么,这样我就可以进行其他查询/聚合,以求和不同小时范围之间的“doc_count”?
例如:在“2016-07-17t00:00.000z”-“2016-07-17t01:00:00.000z”之间,希望查看每个键的总doc_count
预期结果:
{
"range_sum": {
"buckets": [
{
"key": 649,
"doc_count": 300000 // (200000+100000)
},
{
"key": 588,
"doc_count": 2928548 // ... + ...
}....
]
}
}
谢了!
我可能搞错了您的最终目标,但在我看来,您希望在可配置的时间范围内,为meta.mt_id
的每个值获得doc_count
的总的doc_count
?
如果是这种情况,我不认为您真的需要存储第一次聚合的结果,您真的只需要更改间隔值来反映您想要的桶大小。如果您想要meta.mt_id
每个值的总计,那么翻转聚合可能会有所帮助,这样您首先按术语聚合,然后按日期聚合:
{
"size": 0,
"aggs": {
"hourly_M_TAG": {
"terms": {
"field": "meta.mt_id"
},
"aggs": {
"hour": {
"date_histogram": {
"field": "time",
"interval": "2h"
}
}
}
}
}
这将给出每个meta.mt_id
的结果,如果您希望为特定的时间范围添加总数,只需更改间隔以反映这一点。
编辑:
可能有一些聪明的elasticsearch方法可以做到这一点,但我想我会这样做:
foreach bucket in buckets:
index:
{
"id" : {meta.id},
"timestamp" : {key_as_string}
"count" : {doc_count}
}
{
"size": 0,
"filter": {
"range": {
"timestamp": {
"gte": "now-1h",
"lte": "now"
}
}
},
"aggs": {
"termName": {
"terms": {
"field": "id"
},
"aggs": {
"sumCounts": {
"sum": {
"field": "count"
}
}
}
}
}
}
问题内容: 根据上述问题,我用Val给定的脚本进行的elasticsearch查询在最后一周之前都可以正常工作。我们已经升级了ES版本,但突然停止了工作。 现在突然我的ES停止使用脚本中包含“ as Integer”的代码。任何人都可以检查和帮助。 我尝试了给定的查询,现在它抛出以下异常。 我作为参数传递的查询是: 由于我的索引器在该字段中包含1、2、4、6、14个值。但是执行完此查询后,我只得到
问题内容: 想象一下,我有两种记录:一个存储桶和一个项目,其中存储在存储桶中的项目,而存储桶中的项目可能相对较少(通常不超过4个,从不超过10个)。这些记录被压缩为一个(具有更多存储桶信息的项目),并放置在Elasticsearch中。我要解决的任务是通过依赖项属性的过滤查询一次找到500个存储桶(最大),其中包含所有相关项,而我受困于限制/抵消聚合。我该如何执行此类任务?我看到聚合使我可以控制相
我的MongoDB数据库有一个结构 每个a文档都有一个带有bool值vield“result”。我进行聚合选择: 并得到一个结果: 如何计算字段“result”中值“true”和“false”的数量,并得到如下结果:
问题内容: 我想按地址分组,然后按日期获取最新地址,然后按状态过滤此结果。 我在elasticsearch中有此查询,但它最多只能按地址分组并获取最新日期。我无法按状态过滤此结果。 我想使用Elasticsearch从该结果中获得出售状态 问题答案: 使用ES 使用ES可以做到这一点。首先,我们需要汇总地址。然后,我们使用两种汇总,一种汇总获取最新日期,另一种汇总获取销售状态的最新日期。然后,我们
我已经在按\u score desc排序的查询部分中获得了所需的查询结果。现在我需要提取每个文档的3个字段。我想实现如下目标: 我刚刚试过: 1)使用折叠删除重复的值 但问题是它只会保留filed1的不同值,而忽略field 2和field 3的值。例如,我们有2条记录,如下所示: 使用此方法,我们只能获得一条记录,因为它们具有相同的field1值。我想要这三个字段的不同组合值。我们可以使用int
我使用聚合从嵌套字段收集数据并卡住了一点 文件示例: ES允许通过rectangle.attributes._id来分组数据,但是有没有办法让一些“其他”桶把没有添加到任何组中的文档放在那里?或者,也许有一种方法可以通过创建查询来为文档创建桶。我认为桶将是完美的,因为我需要使用“其他”文档进行进一步的聚合。或者也许有一些很酷的解决方法 我使用这样的查询进行聚合 然后得到这个结果 这样的结果将是完美