当前位置: 首页 > 知识库问答 >
问题:

计算数百万条相邻记录并在Elasticsearch中进行汇总

司徒高寒
2023-03-14

我想计算数以百万计的相邻记录,并最终在ElasticSearch中总结它们。我怎么能这么做?

ElasticSearch中的文档(其中六个)数据:

10
20
-30
10
30
100

计算:

  10  to  20 is  10
  20  to -30 is -50
 -30  to  10 is  40
  10  to  30 is  20
  30  to  100 is 70

10+(-50)+40+20+70=90

如何使用Rest-ResthighLevelClient API执行查询来实现此功能

共有1个答案

淳于嘉树
2023-03-14

最有可能的是,在Elasticsearch中做到这一点的唯一合理方法是将已经计算好的增量反规范化并放入Elasticsearch中。在这种情况下,您只需要一个简单的求和聚合。

这是因为Elasticsearch中的数据是“平坦的”,所以它不知道您的文档是相邻的。当您需要知道的所有信息在索引时都已经在文档中时,它会非常出色:在这种情况下,预先构建了特殊索引,聚合速度非常快。

它就像一个'tuin,一个普拉切特小说中的地球的平面版本:一些基本的物理,比如来自RDBMS的join,不起作用,但魔法是可能的。

PUT time_diff
{
  "mappings": {
    "doc": {
      "properties": {
        "eventTime": {
          "type": "date"
        },
        "val": {
          "type": "integer"
        }
      }
    }
  }
}
POST /time_diff/doc/1
{
  "eventTime": "2018-01-01",
  "val": 10
}

POST /time_diff/doc/2
{
  "eventTime": "2018-01-02",
  "val": 20
}
POST /time_diff/doc/_search
{
  "size": 0,
  "aggs": {
    "my_date_histo": {
      "date_histogram": {
        "field": "eventTime",
        "interval": "day"
      },
      "aggs": {
        "the_sum": {
          "sum": {
            "field": "val"
          }
        },
        "my_diff": {
          "serial_diff": {
            "buckets_path": "the_sum"
          }
        }
      }
    },
    "my_sum": {
      "sum_bucket": {
        "buckets_path": "my_date_histo>my_diff"
      }
    }
  }
}
{
  ...
  "aggregations": {
    "my_date_histo": {
      "buckets": [
        {
          "key_as_string": "2018-01-01T00:00:00.000Z",
          "key": 1514764800000,
          "doc_count": 1,
          "my_delta": {
            "value": 10
          }
        },
        ...
      ]
    },
    "my_sum": {
      "value": 90
    }
  }
}
    null
 类似资料:
  • 有一列我想检索并插入到另一个表中例如,下面是我想检索值的第一个表 我使用MSSQL2008

  • 问题内容: 有一个数据库,它在一个表中大约包含200万条记录。我从我的Java代码中运行查询,例如“ select * from table”。是否将从结果集中的数据库中获取完整数据。或不 。如果是,那么它将如何工作,我想学习此检索工作, 请让我知道,我在某处了解到它将从数据库中检索完整的数据并将其存储在临时存储中,并在输出中显示出来。还是与J2C有关 问题答案: 它会从结果集中的数据库中获取完整

  • 我有一个“Customer”表,它有将近120万条记录,其中一列是ntext类型的“customer_records ”,它包含xml数据。我需要在该列的所有现有记录中替换一个url值。我尝试了下面的替换查询,但是执行该查询需要大约20分钟的时间。 在更新期间,CPU 消耗被利用到最大,这引起了问题。在 120 万条记录中,实际更新的记录中有 60 万条记录,但查询需要读取每条记录以查找和替换 U

  • 本文向大家介绍PowerShell 读取性能计数器二进制文件(.blg)记录并汇总计算,包括了PowerShell 读取性能计数器二进制文件(.blg)记录并汇总计算的使用技巧和注意事项,需要的朋友参考一下 由于监控及报告需要,要统计性能计数器每天数值情况,确认数据库服务器的运行状况。若打开计数器填写,比较麻烦,现在统计用 powershell 来读取计数器的值。 第一阶段:Powershell

  • 我构建了一个由九个节点组成的hbase集群。每个节点都有64GB的内存容量。现在,我想向hbase插入数百万条记录。为了提高写入性能,我在每个节点中创建了20个线程,并且在每个节点中将writebuffer设置为64MB,并且自动刷新为false。 准备好数据并设置好配置后,我启动hbase集群。但当记录达到一定程度时,问题就出现了。 Java语言网SocketTimeoutException:等

  • 问题内容: 我有一张表,叫他们 我需要和每月的记录。 因为Aria和Brian每月收入只有Belle&Ziya1个,而Chloe每月收入只有2个。因此,在部门BB中,只有1即Aria,而部门CC为0,因为Chloe&Ziya。 这是我的意思是示例输出: 问题答案: 请尝试以下操作: 请在 此处 找到db <> fiddle 。

  • 问题内容: 我根据员工的工作时间做一些报告。在某些情况下,数据包含两个单独的记录,这实际上是一个时间段。 这是该表的基本版本和一些示例记录: 数据: 在该示例中,最后两个记录在时间上是连续的。我想编写一个查询,该查询结合了所有相邻记录,因此结果集是这样的: 理想情况下,它还应该能够处理两个以上的相邻记录,但这不是必需的。 问题答案: 本文为您的问题提供了许多可能的解决方案 http://www.s

  • 示例数据 我可以使用大约100条规则将一条记录与另一条记录进行比较,以查看源系统1中的客户是否与源系统2相同。 某些规则可以推断记录值并将数据添加到关于客户的主记录中。 因为某些规则可能会向任何特定记录推断/添加数据,所以当记录更改时,必须再次应用这些规则。 我们每天有数百万条记录,我们必须统一 Apache波束/数据流实现 null null 或者也许有一个更标准的方法来解决这类问题。