【问题标题】:Aggregating data based on string value基于字符串值聚合数据
【发布时间】:2017-06-02 23:38:22
【问题描述】:

我的索引中有数千个文档,我想要做的是聚合具有相同日期的文档并显示该日期有多少文档。日期是字符串。为了让您更好地了解我想要的内容,假设日期字段称为arrivalDate,每个文档都有一个特定的arrivalDate。我希望数据显示如下:

20110105:5 条记录

20120501:2 条记录

20120602:15 条记录

等等。除了使用弹性搜索之外,这基本上类似于GROUP BY SQL 查询。如何使用弹性搜索构建这样的查询?

【问题讨论】:

  • 只是一个建议,不要将日期字段保存为字符串。 Elasticsearch 有多种数据类型,“日期”类型就是其中之一。
    这样做的好处 - * 您可以使用内置的“日期”类型字段的许多常见功能,例如制作日期直方图。您还可以比较日期并使用过滤器,例如某个日期的新旧。

标签: elasticsearch


【解决方案1】:

您需要的是term 聚合。它看起来像这样。

{
  "aggs": {
    "group_bu_date": {
      "terms": {
        "field": "arrivalDate"
      }
    }
  }
}

【讨论】:

  • 执行该命令时收到错误消息。我的错误是:默认情况下,文本字段上的字段数据被禁用。在 [arrivalDate] 上设置 fielddata=true 以便通过反转倒排索引将 fielddata 加载到内存中。但是请注意,这可能会占用大量内存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2011-10-12
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 2020-12-17
相关资源
最近更新 更多