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