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

Elasticsearch一个月内特定小时的总和

经福
2023-03-14
问题内容

我有一个域服务器elasticsearchtimestampuserbytes_down(其中包括)

我只想在一个小时介于上午8点至晚上8点之间的情况下,为一个月的用户总计byte_down值

我可以通过以下查询获取带有日期直方图的每日总计(我在这里使用的是perl API),但无法找到一种将每天的小时数减少到小时范围的方法

my $query = {
index => 'cm',
    body  => {
        query => {
            filtered => {
                query => {
                    term => {user => $user}
                },
                filter => {
                    and => [
                    {
                        range => {
                            timestamp => {
                                gte => '2014-01-01',
                                lte => '2014-01-31'
                            }
                        }
                    },
                    {
                        bool => {
                            must => {
                                term => { zone => $zone }
                            }
                        }
                    }
                    ]
                }
            }
        },
        facets => {
            bytes_down => {
                date_histogram => {
                    field => 'timestamp',
                    interval => 'day',
                    value_field => 'downstream'
                }
            }
        },
        size => 0
    }
};

谢谢戴尔


问题答案:

我认为您需要使用script过滤器而不是range过滤器,然后将其放在facet_filter方面中:

"facet_filter" => {
    "script" => {
        "script" => "doc['timestamp'].date.getHourOfDay() >= 8 &&
                     doc['timestamp'].date.getHourOfDay() < 20"
    }
}


 类似资料:
  • 问题内容: 我有一个PostgreSQL 9.1数据库,该数据库的表包含一个 时间戳 和一个测量 值 我需要每小时平均8小时范围内的平均值。换句话说,我需要平均1h-8h,2h-9h,3h-10h等。 我不知道如何进行这样的查询。我到处都看过,但也不知道要寻找什么功能。 我发现的收盘价是每小时/每天的平均值或块平均值(例如1h-8h,9h-16h等)。但是在这些情况下,时间戳只是使用函数转换(如下

  • 本文向大家介绍Python计算一个给定时间点前一个月和后一个月第一天的方法,包括了Python计算一个给定时间点前一个月和后一个月第一天的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python计算一个给定时间点前一个月和后一个月第一天的方法。分享给大家供大家参考,具体如下: python如何获取一个时间点的前一个月和后一个月,网上虽然有很多教程,但是本人感觉太杂了而且不太好用,研

  • 问题内容: 我正在尝试计算在一块土地上灌溉的总水量。我所拥有的是记录在SQL数据库中的瞬时流量变化。-以立方米/小时为单位。 根本不能将这些值相加并假定是灌溉的总水量。 需要做的是计算每个时间戳的时差,并计算该持续时间的音量,然后在用户选择的小时数内进行计算。 因此对于上述数据,时间差为(第一个小时) 该小时(从凌晨4点到凌晨5点)的总灌溉量为:373811.6立方米的水除以3600 = 103.

  • 问题内容: 我有一个具有“约会表”和“服务表”的数据库。每个appt都有一个服务,每个服务都有一个价格。我想要的是一个查询,该查询将始终返回12行(每月一行),并包含几个月的总和(基于其服务ID)。到目前为止,我有: 当前,返回的内容如下: 问题是,如果一个月没有任何订单,我不会在查询中返回该月。我希望该月有一个记录,只是它的“ monthly_total”等于零。 以下是我希望查询返回的内容:

  • 问题内容: 如何知道特定年份的特定月份有多少天? 问题答案: Java 8及更高版本 @沃伦·诺科斯(Warren M. 如果你尝试使用Java 8的新Date and Time API,则可以使用java.time.YearMonthclass。请参阅Oracle教程。 测试:尝试a年的一个月: Java 7及更早版本 创建日历,设置年份和月份并使用 getActualMaximum 测试:尝试