elasticsearch - Elasticsearch从日期和文档计数中获得明显的年份

标签 elasticsearch

我有这样的数据和要求

"birth": "2003-02-01T15:00:00.000Z",
    "aggs": {
        "aaa": {
            "terms": {
                "field": "birth",
                "format": "yyyy",
                "size": 100
            }
        }
    }
}

我想要以年份列表的形式获取结果,并且每年的当前结果的文档数如下所示:
                {
                    "key": 988556400000,
                    "key_as_string": "2001",
                    "doc_count": 2295
                },
                {
                    "key": 1375369200000,
                    "key_as_string": "2013",
                    "doc_count": 2284
                },
                {
                    "key": 1054479600000,
                    "key_as_string": "2003",
                    "doc_count": 2281
                },
                {
                    "key": 1183215600000,
                    "key_as_string": "2007",
                    "doc_count": 2276
                },
                {
                    "key": 1009810800000,
                    "key_as_string": "2001",
                    "doc_count": 2231
                },
                {
                    "key": 1170255600000,
                    "key_as_string": "2007",
                    "doc_count": 1695
                },

如果key_as_string是实际年份,那么我希望它应该仅包含一个值。

最佳答案

条款汇总将为每个唯一的“出生”日期创建存储桶,格式字段将仅从中输出年份。

因此,由于基础日期不同,因此您将获得年份的重复值。

您需要改为使用date_histogram。它将根据间隔存储文件

查询:

{
  "size": 0, 
  "aggs": {
    "NAME": {
      "date_histogram": {
        "field": "birth",
        "interval": "year"
      }
    }
  }
}

结果:
"aggregations" : {
    "NAME" : {
      "buckets" : [
        {
          "key_as_string" : "2003-01-01T00:00:00.000Z",
          "key" : 1041379200000,
          "doc_count" : 1
        },
        {
          "key_as_string" : "2004-01-01T00:00:00.000Z", --> 2 docs under year 2004
          "key" : 1072915200000,
          "doc_count" : 2
        }
      ]
    }
  }

如果只想查看年份,则可以指定“格式”:“yyyy”
查询:
{
  "size": 0, 
  "aggs": {
    "NAME": {
      "date_histogram": {
        "field": "birth",
        "interval": "year",
        "format": "yyyy" --> note
      }
    }
  }
}

关于elasticsearch - Elasticsearch从日期和文档计数中获得明显的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61815797/

相关文章:

elasticsearch - 索引时 Elasticsearch 面临内存问题

arrays - ElasticSearch中的权限

elasticsearch - Logstash jdbc插件问题

spring-boot - 当SpringBoot应用程序请求ElasticSearch时,是否可以将所有索引数据搜索上的Fuzzy参数设置为应用程序参数?

Elasticsearch 2.1 : Result window is too large (index. 最大结果窗口)

java - 如何在 ElasticSearch 中使用带通配符的术语?

elasticsearch - Solr 中的每个商店索引

elasticsearch - ElasticSearch中的正则表达式匹配无法按预期工作

spring-boot - Spring Boot +休眠搜索:必需的索引状态被忽略?

java - Elasticsearch 使用 Java 客户端查找所有索引