elasticsearch Elasticsearch中的动态日期间隔筛选器查询,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch Elasticsearch中的动态日期间隔筛选器查询,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch Elasticsearch中的动态日期间隔筛选器查询

elasticsearch Elasticsearch中的动态日期间隔筛选器查询,elasticsearch,kibana,elasticsearch,Kibana,我试图满足客户希望从elasticsearch中选择数据,并按可能更改的日期间隔分割文档计数的要求 [1] :-我想选择在给定时间间隔(1.1.-31.1.)内开始/结束的所有文档 [2] :-期望结果示例(kibana图表) 我有这样的文档,每个文档都有startDate和可选的endDate,这意味着请求尚未完成 { "_index": "bpm-aggregate-19.07", "_type": "_doc", "_id": "b80b708c-d617-4dd4-89cd-

我试图满足客户希望从elasticsearch中选择数据,并按可能更改的日期间隔分割文档计数的要求

[1] :-我想选择在给定时间间隔(1.1.-31.1.)内开始/结束的所有文档

[2] :-期望结果示例(kibana图表)

我有这样的文档,每个文档都有startDate和可选的endDate,这意味着请求尚未完成

{
  "_index": "bpm-aggregate-19.07",
  "_type": "_doc",
  "_id": "b80b708c-d617-4dd4-89cd-6f1efeef927a.ebab442f-d9ad-423f-862c-d803eae3c99a.7330.28",
  "_version": 33,
  "_score": null,
  "_source": {
    "bpm": {
      "sequenceId": 33
    },
    "source": {
      "bpm": {
        "version": "2064.117680c1-e266-4dac-ae23-fb8bf948003a",
        "name": "Check Request"
      },
      "parent": {
        "parent": {
          "bpm": {
            "version": "2064.117680c1-e266-4dac-ae23-fb8bf948003a",
            "name": "Payment Order",
            "documentation": ""
          },
          "id": "c1c49bbe-b5f2-4c49-9dd6-7812a94d8ba3",
          "type": "wle:processApplication"
        },
        "id": "b80b708c-d617-4dd4-89cd-6f1efeef927a",
        "instance": {
          "bpm": {
            "state": "Active"
          },
          "id": "7330"
        },
        "type": "bpmn:process"
      },
      "id": "99bc462b-312d-43d0-8548-715b19f6ee5b",
      "type": "bpmn:userTask"
    },
    "context": {
      "bpm": {
        "starting-process-instance": "b80b708c-d617-4dd4-89cd-6f1efeef927a.ebab442f-d9ad-423f-862c-d803eae3c99a.7330"
      },
      "trace-id": "3f605c67-1e21-47bb-91b3-b87cd24d26da",
      "span-id": "8d07ccec45054267"
    },
    "@taskCompletedOverdue": 1,
    "task": {
      "user": {
        "bpm": {
          "name": "John Doe"
        },
        "id": "jdoe3"
      },
      "time": {
        "complete": "2019-07-29T10:17:39.823Z",
        "start": "2019-07-29T05:08:02.180Z",
        "open": "2019-07-29T10:17:23.930Z",
        "assign": "2019-07-29T05:08:02.340Z"
      },
      "kpi": {
        "timeToCompleteFromOpen": 0.26488333333333336,
        "timeToComplete": 309.62738333333334,
        "timeToFirstOpen": 309.3598333333333
      },
      "name": "Check Request",
      "state": "Completed",
      "team": {
        "bpm": {
          "name": "All Users"
        },
        "id": "All Users_T_da7e4d23-78cb-4483-98ed-b9c238308a03.d158d9ca-4d62-4c73-9ddd-dfa70b37f398"
      }
    },
    "@lastUpdateEventType": "bpmnx:ACTIVITY_COMPLETED",
    "@timestamp": "2019-07-29T10:17:40.293Z",
    "system": {
      "bpm": {
        "bpmCellName": "bpmWorfklowCenterCell01"
      },
      "id": "ebab442f-d9ad-423f-862c-d803eae3c99a"
    },
    "@version": "1",
    "category": "bpmnx:BPD",
    "business-events-extension-version": "bpmn/1.0.0",
    "business-events-envelope-version": "1.0.0",
    "@lastUpdateEventSequenceId": 33,
    "@lastUpdateTime": "2019-07-29T12:17:39.823+02:00"
  }
}
到目前为止,我已经提出了以下Lucene查询,但是它们有硬编码的日期范围(这就是我试图摆脱的)

对于每个间隔,依此类推。这似乎工作得很好,但这是非常不切实际的。如果我们想要的时间间隔是一个月,那么我需要为这个月的每一天修改这些过滤器。如果有人想按月查看过去一年的数据,我需要创建一组新的查询


有更简单的方法吗?

您看过聚合范围或聚合直方图了吗?你还可以发布一些示例文档吗?@JBone谢谢你的提示。我已经添加了文档的整个示例。我已经查看了范围和聚合直方图,问题似乎是,我无法对每个桶应用过滤器。例如,如果我按日期聚合,间隔为1个月,我需要筛选在该间隔内有开始日期或结束日期的文档。查看我添加的lucene查询。您是否查看了聚合范围或聚合直方图?你还可以发布一些示例文档吗?@JBone谢谢你的提示。我已经添加了文档的整个示例。我已经查看了范围和聚合直方图,问题似乎是,我无法对每个桶应用过滤器。例如,如果我按日期聚合,间隔为1个月,我需要筛选在该间隔内有开始日期或结束日期的文档。请参阅我添加的lucene查询。
(task.time.start: [* TO now-1d/d] && task.time.complete: [now-1d/d TO now/d]) || (task.time.start: [now-1d/d TO now/d] && task.time.complete: [now/d TO *]) || (task.time.start: [now-1d/d TO now/d] && task.time.complete: [now-1d/d TO now/d]) || (task.time.start: [now-1d/d TO now/d])
(task.time.start: [* TO now-2d/d] && task.time.complete: [now-2d/d TO now-1d/d]) || (task.time.start: [now-2d/d TO now-1/d] && task.time.complete: [now-1d/d TO *]) || (task.time.start: [now-2d/d TO now-1d/d] && task.time.complete: [now-2d/d TO now-1d/d]) || (task.time.start: [now-2d/d TO now-1d/d])