当前位置: 首页 > 面试题库 >

按星期几和小时数的Elasticsearch聚合

马新觉
2023-03-14
问题内容

我有以下类型的文件:

[{"msg":"hello", date: "some-date"},{"msg":"hi!", date: "some-date"}, ...

我想按星期几计算文件数。例如,x消息在星期一发送,y消息在星期二发送,依此类推。

我已经使用date_histogram进行汇总,但是它会按日向我返回文档。它确实返回了当天,但是说“ 22周三”和“ 29周三”作为单独的汇总文档返回。

这在某种程度上与Elasticsearch有关-按星期和小时的天分组,但是该问题没有答案,因此我将其重新发布。根据那里的建议,它要求我对key_as_string进行术语聚合,但是我需要为每个对象添加doc_count而不是仅对术语进行计数。我也不知道如何在嵌套聚合中使用key_as_string。

这是我尝试过的:

"aggs" : {
                "posts_over_days" : {
                    "date_histogram" : { 
                        "field" : "created_time", 
                        "interval": "day",
                        "format": "E" 
                    }
                }

问题答案:

在该线程中已经解决了同类问题。

为使解决方案适应您的问题,我们需要编写一个脚本以将日期转换为一天中的小时和一周中的某天:

Date date = new Date(doc['created_time'].value) ; 
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat('EEE, HH');
format.format(date)

并在查询中使用它:

{
    "aggs": {
        "perWeekDay": {
            "terms": {
                "script": "Date date = new Date(doc['created_time'].value) ;java.text.SimpleDateFormat format = new java.text.SimpleDateFormat('EEE, HH');format.format(date)"
            }
        }
    }
}


 类似资料:
  • 问题内容: 背景 我在SQL Server环境中设置了一个表,该表包含我正在跟踪的各种活动的日志。特定的日志项使用唯一的代码对正在发生的活动进行分类,并且日期时间字段跟踪该活动的发生时间。 问题 我想使用单个查询或存储过程来获取平均每小时的活动计数,并按一周中的星期几进行分组。例子: 现在,我有一个查询设置,它每天会吐出每小时的计数,但是我的问题是要进一步向前发展,并在一周中的某天取得平均水平。这

  • 问题内容: 我在课堂上有以下财产: 通过ES中的以下映射 我想进行汇总以返回按“星期几”分组的所有数据,即“星期一”,“星期二” …等 我知道我可以在聚合调用中使用“脚本”来执行此操作,但是,据我了解,如果有很多文档,使用脚本不会对性能产生不小的影响。 有没有一种方法可以用“子属性”映射属性。即我可以用一个字符串: 全部具有代码中类的单个属性。 我可以做一些类似的事情来分别存储“完整日期”,然后分

  • 问题内容: 如何获得当前一周的星期一和星期五的日期? 我有以下代码,但是如果当前日期是星期日或星期六,则它将失败。 问题答案: 这些strtotime输入效果很好: 您需要做的就是将逻辑包装在一些if语句中。

  • 本文向大家介绍js显示当前日期时间和星期几,包括了js显示当前日期时间和星期几的使用技巧和注意事项,需要的朋友参考一下 JavaScript获取当前日期时间同时显示星期几,具体代码如下: 在网页上及时动态显示当前的日期时间并显示星期的做法: 关于这方面的内容网上很多,有js获取当前日期时间同时显示星期,js获取当前时间和一星期钱的时间等内容,都很具有参考价值,希望大家多阅读类似文章,将类似方法熟练

  • 问题内容: 我将此数据插入了Elasticsearch: 旁注:重现: 1)下载:http://wmo.co/20160928_es_query/bulk.json 2)执行:卷曲-s -XPOST ‘ 的http://本地主机:9200 /测试/外部/ _bulk漂亮 ‘ -数据二进制@ bulk.json 问题: 获取每个“位置”有多少记录的计数。 解决方案1:存储桶聚合..没有得到期望的结果

  • 问题内容: 我有当前日期,还有一个常数,它指示星期几。我想基于该常数获取一周的开始日期。如果我将一周的第一天硬编码为星期一(或其他任何东西),那么这很简单。但是一周的第一天一直在变化。因此,我不想在每次更改第一天时都更改代码。 这是我尝试使用Java的Calendar的方法: 我想获取一周的开始日期。上面的函数返回星期的第一天,并且星期开始日期被硬编码为星期六。每当星期开始日期以上的要求发生变化时