在elasticsearch

时间:2017-09-06 16:09:26

标签: elasticsearch

我在ElasticSearch中有一个索引,其中包含有关用户与我平台的连接信息的文档。我想构建一个带有日期聚合的查询,我可以计算在两个给定日期之间每天连接的所有用户。

我有3个相关字段:user_idconnection_time_startconnection_time_end。我这样做的是查询:

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "connection_time_start": {
              "lte": "2017-08-04T23:59:59"
            }
          }
        },
        {
          "range": {
            "connection_time_end": {
              "gte": "2017-08-02T00:00:00"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "franja_horaria": {
      "date_histogram": {
        "field": "connection_time_start",
        "interval": "day",
        "format": "yyyy-MM-dd"
      },
      "aggs": {
        "ids": {
          "cardinality": {
            "field": "user_id"
          }
        }
      }
    }
  }
}

此查询作为结果给出了包含在第2,3和2天具有起始连接的用户数的桶。 8月4日。问题是有些用户的连接从第2天开始,到第3天结束,甚至在第4天结束。

这些用户应计算每天的连接用户数,但因为我使用connection_time_start进行聚合只计算当天。

我尝试在聚合中添加一个范围,例如这个(https://www.elastic.co/guide/en/elasticsearch/reference/2.4/search-aggregations-bucket-daterange-aggregation.html)但是没有得到好结果。

有人可以帮我这个吗?提前谢谢!

0 个答案:

没有答案