在es中按照时间字段,以2分钟为时间粒度,也就是把2分钟数据统计一下交易量,然后统计一整天的数据量,最后用这数据做个时序图。
ES的查询语句:
{ "size":0, "query":{ "bool":{ "must":[ { "bool":{ "must":[ { "term":{ "tag.keyword":{ "value":"DB", "boost":1 } } }, { "term":{ "dataID.keyword":{ "value":"b5bb9e39-59c7-46fb-b380-e621a21fd7d5", "boost":1 } } }, { "range":{ "time":{ "from":1636473600000, "to":1636646400000, "include_lower":true, "include_upper":false, "boost":1 } } } ], "disable_coord":false, "adjust_pure_negative":true, "boost":1 } } ], "disable_coord":false, "adjust_pure_negative":true, "boost":1 } }, "aggregations":{ "time_xxx":{ "histogram":{ "field":"time", "interval":120000, "offset":0, "order":{ "_key":"asc" }, "keyed":false, "min_doc_count":0 } } } }
实际查询结果截图:
简要说明:
这个数据里面的时间字段是time,是毫秒级别的,时间粒度是2分钟,间隔就是120000,还有就是在加过滤条件的时候,数据的key,可能需要加上keyword,即xxx.keyword,才管用,这个估计和es的mapping模版有关系。 查询语句的限制条件就在term term range 那一级仿照着加就行。
我这留个备忘录,以备不时之需。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)