elasticsearch 如何在elasticsearch中根据每年的特定日期聚合字段?,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack" /> elasticsearch 如何在elasticsearch中根据每年的特定日期聚合字段?,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack" />

elasticsearch 如何在elasticsearch中根据每年的特定日期聚合字段?

elasticsearch 如何在elasticsearch中根据每年的特定日期聚合字段?,elasticsearch,kibana,elastic-stack,elasticsearch,Kibana,Elastic Stack,我的索引中有2010年到2015年的数据 从2010年到2015年,我每年都使用下面的代码来获取汇总的名字详细信息,它的工作原理与预期一致 POST profile/_search { "size": "0", "aggs": { "count_by_year": { "date_histogram": { "field": "logdate", "interval": "year", "format": "yyyy"

我的索引中有2010年到2015年的数据

从2010年到2015年,我每年都使用下面的代码来获取汇总的名字详细信息,它的工作原理与预期一致

POST profile/_search
{
  "size": "0",
  "aggs": {
    "count_by_year": {
      "date_histogram": {
        "field": "logdate",
        "interval": "year",
        "format": "yyyy"
      },
      "aggs": {
        "count_by_firstname": {
          "terms": {
            "field": "profile.firstname"
          }
        }
      }
    }
  }
}
如何根据每年的特定日期汇总我的数据

例如,我希望检索每年2月15日至4月15日的数据。

聚合范围如下:

{
    "aggs": {
        "range": {
            "date_range": {
                "field": "logdate",
                "format": "YYYYMMDD",
                "ranges": [
                    {
                        "from": "20150201"
                    },
                    {
                        "to": "20150430"
                    }
                ]
            },
            "aggs": {
                "count_by_firstname": {
                    "terms": {
                        "field": "profile.firstname"
                    }
                }
            }
        }
    }
}
聚合范围如下:

{
    "aggs": {
        "range": {
            "date_range": {
                "field": "logdate",
                "format": "YYYYMMDD",
                "ranges": [
                    {
                        "from": "20150201"
                    },
                    {
                        "to": "20150430"
                    }
                ]
            },
            "aggs": {
                "count_by_firstname": {
                    "terms": {
                        "field": "profile.firstname"
                    }
                }
            }
        }
    }
}
你可以试着用a和这样的a。请注意,2月15日是一年中的46天,4月15日是一年中的105天(当然闰年除外,但这说明了一个解决方案)

脚本
将在2月15日至4月15日(任何年份)之间获取任何带有
日志日期的文档,然后
日期直方图
将在适当的年份中发送这些文档。最后,
terms
聚合按名字分割计数

{
  "size": "0",
  "aggs": {
    "specific_period": {
      "filter": {
        "script": {
          "script": "doc.logdate.date.dayOfYear >= 46 && doc.logdate.date.dayOfYear <= 105"
        }
      },
      "aggs": {
        "byyear": {
          "date_histogram": {
            "field": "logdate",
            "interval": "year",
            "format": "yyyy"
          },
          "aggs": {
            "count_by_firstname": {
              "terms": {
                "field": "profile.firstname"
              }
            }
          }
        }
      }
    }
  }
}
{
“大小”:“0”,
“aggs”:{
“特定时期”:{
“过滤器”:{
“脚本”:{
“脚本”:“doc.logdate.date.dayOfYear>=46&&doc.logdate.date.dayOfYear您可以尝试将a与这样的a一起使用。请注意,2月15日是一年中的46天,4月15日是一年中的105天(当然闰年除外,但这说明了一种解决方案)

脚本
将获取在2月15日至4月15日(任何一年)之间具有
日志日期
的任何文档,然后
日期柱状图
将它们分配到适当的年份桶中。最后,
术语
聚合按名字分割计数

{
  "size": "0",
  "aggs": {
    "specific_period": {
      "filter": {
        "script": {
          "script": "doc.logdate.date.dayOfYear >= 46 && doc.logdate.date.dayOfYear <= 105"
        }
      },
      "aggs": {
        "byyear": {
          "date_histogram": {
            "field": "logdate",
            "interval": "year",
            "format": "yyyy"
          },
          "aggs": {
            "count_by_firstname": {
              "terms": {
                "field": "profile.firstname"
              }
            }
          }
        }
      }
    }
  }
}
{
“大小”:“0”,
“aggs”:{
“特定时期”:{
“过滤器”:{
“脚本”:{


“脚本”:doc.logdate.date.dayOfYear>=46&&doc.logdate.date.dayOfYear是
logdate
ISODATE格式?日期是yyyyymmdd格式。示例:20141231是否仍要按年份进行聚合,但将结果限制为每年的一部分?还是要按天、周、月进行聚合?按年份和特定的日期和月进行聚合
logdate
ISODATE格式?日期为YYYYMMDD格式。例如:20141231是否仍要按年份进行聚合,但将结果限制为每年的一部分?还是要按天、周、月进行聚合?按年、按特定日期和月份进行聚合?我认为这不会搜索每年的特定日期范围。仅此而已搜索一个特定范围。据我所知,OP的问题是针对一个“仅”以日和月为范围的查询。我有一个类似的问题,我不认为它在每年搜索一个特定的日期范围。这只搜索一个特定范围。据我所知,OP的问题是针对一个“仅”的查询以日和月为一个范围。我有一个类似的问题,如果可能的话,请给我提供一些固定的解决方案。是否可以根据月的日期进行聚合?是的,只需使用
doc.logdate.date.dayOfMonth
而不使用脚本就可以实现这一点吗?如果可能,请给我一些固定的解决方案。可能吗要基于月日进行聚合吗?是的,只需使用
doc.logdate.date.dayOfMonth
而不是