V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jessun1990
V2EX  ›  Elasticsearch

请教一个关于 ElasticSearch 查询的写法?

  •  
  •   jessun1990 · 2019-06-10 12:20:12 +08:00 · 3843 次点击
    这是一个创建于 2001 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求背景

    ES 版本为 1.5.2

    使用 olivere/elastic 对 ES 进行查询操作。假定数据文档结构为

    {
    	"id": 1,
        "create_at": "2006-01-02T15:04:05Z07:00"
    }
    

    ES 中已经有一定量的数据。

    需要查询:指定日期段 /全量时间段 内每天 00:00-02:00, 02:00-04:00 , 04:00-06:00 ... 22:00-24:00 的文档的平均值中的最高值。

    简单的统计查询已经搞定,只有这条需求感觉无从下手。目前能检索到的类似文章:

    https://elasticsearch.cn/question/893

    https://blog.csdn.net/weixin_33953249/article/details/87338463

    第一篇没生效,第二篇没看懂。我这里使用 Go 语言操作 ES 才两天,并且还有其他开发任务,没有做特别深入研究。

    请大佬们启发和赐教。

    7 条回复    2019-06-29 19:19:41 +08:00
    ben1024
        1
    ben1024  
       2019-06-10 13:49:20 +08:00
    需要理解‘桶’,也就是做个聚合就行
    996icu
        2
    996icu  
       2019-06-10 14:40:57 +08:00
    时间分组聚合,官网有案例
    Takamine
        3
    Takamine  
       2019-06-10 16:09:10 +08:00
    话说为什么要选 ES 的版本这么低。:smile:
    jessun1990
        4
    jessun1990  
    OP
       2019-06-10 16:18:56 +08:00
    @Takamine 公司既有的 es 服务,已经有其他服务在跑,无法升级。


    @ben1024
    @996icu
    时间分组聚合已经有了,就是聚合到每天。但是聚合到每天的固定时间段,这个就萌圈了。
    996icu
        5
    996icu  
       2019-06-10 16:30:47 +08:00   ❤️ 1
    @jessun1990 时间区间分组聚合 dateHistogramInterval.hours(小时区间) 我只会用 JavaApi 写,DSL 不会,你可以查下 dateHistogramInterval 这个 DSL 的使用
    dif
        6
    dif  
       2019-06-10 16:35:01 +08:00
    ```json
    GET indexName/indexType/_search
    {
    "from" : 0,
    "size" : 1,
    "query" : {
    "bool" : {
    "must" : [
    {
    "term" : {
    "Field" : {
    "value" : "value",
    "boost" : 1.0
    }
    }
    }
    ]
    }
    },
    "aggregations" : {
    "histogram" : {
    "histogram" : {
    "field" : "DATE_TIME",
    "interval" : 120.0,
    "offset" : 0.0
    },
    "aggregations" : {
    "index_value" : {
    "avg" : {
    "field" : "AVG_FIELD_NAME"
    }
    }
    }
    }
    }
    }
    ```
    jessun1990
        7
    jessun1990  
    OP
       2019-06-29 19:19:41 +08:00
    抱歉现在才回复
    @996icu 如果只是一个条件,求平均每日文档数,或者是求每 2 小时间隔文档数,我都回写。但是这个两个条件加起来,求平均每日 2 小时间隔的文档数,我就拙计了。

    @dif 感谢壮士,但是我这里尝试走了一下,貌似没成功。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:00 · PVG 07:00 · LAX 15:00 · JFK 18:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.