使用elasticsearch构建报告后端:此查询是否可行?

时间:2015-10-30 14:43:35

标签: elasticsearch

是否可以根据一个月的日期时间查询elasticsearch以将条目在给定状态中的分钟数相加?

例如,条目的格式为:

Datetime        Cluster     Hosts_on    Hosts_off   Hosts_on_percentage
Oct 10 12:01    c101        10          2           .8333
Oct 10 12:02    c101        10          2           .8333
Oct 10 12:03    c101        10          2           .8333

是否可以根据日期时间总计c101拥有超过60%主机的分钟数?

2 个答案:

答案 0 :(得分:1)

不完全是这样,但是你可以用这样的东西非常接近:

POST /test_index/_search?search_type=count
{
   "query": {
      "filtered": {
         "filter": {
            "bool": {
               "must": [
                  {
                     "term": {
                        "Cluster": "c101"
                     }
                  },
                  {
                     "range": {
                        "Hosts_on_percentage": {
                           "gt": 0.6
                        }
                     }
                  }
               ]
            }
         }
      }
   },
   "aggs": {
      "min_datetime": {
         "min": {
            "field": "Datetime"
         }
      },
      "max_datetime": {
         "max": {
            "field": "Datetime"
         }
      }
   }
}

根据您发布的数据,此查询返回:

{
   "took": 4,
   "timed_out": false,
   "_shards": {
      "total": 1,
      "successful": 1,
      "failed": 0
   },
   "hits": {
      "total": 3,
      "max_score": 0,
      "hits": []
   },
   "aggregations": {
      "max_datetime": {
         "value": 820980000,
         "value_as_string": "Jan 10 12:03"
      },
      "min_datetime": {
         "value": 820860000,
         "value_as_string": "Jan 10 12:01"
      }
   }
}

那么你可以计算客户端最小和最大时间的差异。

或者,如果您只想要返回的文件数,可以从以下网址获取:

"hits": {
   "total": 3,
   "max_score": 0,
   "hits": []
},

以下是我用来测试它的一些代码(在这里获取正确的日期映射):

http://sense.qbox.io/gist/c62289926a18e34b1b1b31e3643f36cbe5a7b4cf

答案 1 :(得分:0)

如果它们位于每个群集和日期时间的字段中,则可以确定总计分钟数。您必须使用存储桶和指标聚合。条件可以通过范围聚合来实现。

我在下面推荐的链接;我希望我能给你一个如何解决这个任务的想法: - )

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-range-aggregation.html