概要:字段摺疊其實就是聚合,不過在es中字段摺疊是單獨一個模塊,聚合也是一個模塊,在某些時候兩者可以實現同樣的功能,字段摺疊是簡單的聚合,而聚合aggs則是一個大模塊,裏面有更多更詳細的各種聚合功能。本文只說字段摺疊,不講解agg模塊,感興趣的話你可以去官網。
字段摺疊:
GET cdr-2018-12*/_search { "query": { "bool": { "must": [ {"range": { "hold_time": { "gt": 0 } }} ] } }, "collapse" : { "field" : "machine_id" }, "sort": [{"start_time":"desc"}], "size": 1000 } #默認情況下,collapse字段摺疊,取出的是聚合組中最小的一條數據,如果需要最大的那一條數據,可以用sort來排序。查詢結果如下: { "took" : 38963, "timed_out" : false, "_shards" : { "total" : 30, "successful" : 30, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 10000, "relation" : "gte" }, "max_score" : null, "hits" : [ { "_index" : "cdr-2018-12-20", "_type" : "_doc", "_id" : "HbQigm4BAv3kTLdZH-xL", "_score" : null, "_routing" : "5862855", "_source" : { "calledtogateway" : "33321258845862855", "called7" : "5862855", "machine_id" : "d0ef978dbd4842ba85dfa954570f8ca4", "hold_time" : 44, "call_ip_province" : "南非", "called9" : "845862855", "softswitchd_name" : "MBX3000|18a69", "start_time" : "2018-12-31 23:57:47", "called_ip_province" : "美國", "fee_prefix" : "33#25884", "callere164" : "27653079406", "callerproduct_id" : "TS-v4.6.0-18", "customer_name" : "DIASPORA" }, "fields" : { "machine_id" : [ "d0ef978dbd4842ba85dfa954570f8ca4" ] }, "sort" : [ 1546300667000 ] }, { "_index" : "cdr-2018-12-20", "_type" : "_doc", "_id" : "d3BVo24BZpgDzq3xFsk_", "_score" : null, "_routing" : "0564174", "_source" : { "calledtogateway" : "61450564174", "called7" : "0564174", "machine_id" : "61892ec7343907f201e172a1562f2f6d", "hold_time" : 11, "call_ip_province" : "德國", "called9" : "450564174", "softswitchd_name" : "MBX3000|2c1e629", "start_time" : "2018-12-31 23:14:41", "called_ip_province" : "澳大利亞", "fee_prefix" : "00019614", "callere164" : "Sudarshan2121", "customer_name" : "Welcoserver" }, "fields" : { "machine_id" : [ "61892ec7343907f201e172a1562f2f6d" ] }, "sort" : [ 1546298081000 ] } } #_source中取出來的是聚合組中的一條數據,fields字段是聚合的字段,sort值是當前排序的值
2.字段摺疊取出組中多條數據
GET cdr-2018-12-10/_search { "query": { "bool": { "must": [ {"range": { "hold_time": { "gt": 0 } }} ] } }, "collapse" : { "field" : "machine_id" , "inner_hits": { "name": "pg", "size": 2, "sort": [ { "start_time": "desc" } ] } }, "sort": [{"start_time":"desc"}], "size": 5 } #只需要在內部加上inner_hits, name是自定義的名字, 結果如下: { "took" : 1024, "timed_out" : false, "_shards" : { "total" : 10, "successful" : 10, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 10000, "relation" : "gte" }, "max_score" : null, "hits" : [ { "_index" : "cdr-2018-12-10", "_type" : "_doc", "_id" : "H6RRo24BAv3kTLdZCbOq", "_score" : null, "_routing" : "5632186", "_source" : { "machine_id" : "61892ec7343907f201e172a1562f2f6d", "hold_time" : 5, "call_ip_province" : "英國", "called9" : "265632186", "softswitchd_name" : "MBX3000|2acd5b6", "start_time" : "2018-12-19 23:59:58", "called_ip_province" : "澳大利亞", "fee_prefix" : "0001961", "callere164" : "Arman1", "customer_name" : "Welcoserver" }, "fields" : { "machine_id" : [ "61892ec7343907f201e172a1562f2f6d" ] }, "sort" : [ 1545263998000 ], "inner_hits" : { "pg" : { "hits" : { "total" : { "value" : 10000, "relation" : "gte" }, "max_score" : null, "hits" : [ { "_index" : "cdr-2018-12-10", "_type" : "_doc", "_id" : "H6RRo24BAv3kTLdZCbOq", "_score" : null, "_routing" : "5632186", "_source" : { "machine_id" : "61892ec7343907f201e172a1562f2f6d", "hold_time" : 5, "call_ip_province" : "英國", "start_time" : "2018-12-19 23:59:58", "called_ip_province" : "澳大利亞", "fee_prefix" : "0001961", "callere164" : "Arman1", "customer_name" : "Welcoserver" }, "sort" : [ 1545263998000 ] }, { "_index" : "cdr-2018-12-10", "_type" : "_doc", "_id" : "HKRRo24BAv3kTLdZCbOq", "_score" : null, "_routing" : "9955369", "_source" : { "machine_id" : "61892ec7343907f201e172a1562f2f6d", "hold_time" : 4, "call_ip_province" : "英國", "called9" : "359955369", "softswitchd_name" : "MBX3000|2acd59b", "start_time" : "2018-12-19 23:59:58", "called_ip_province" : "澳大利亞", "fee_prefix" : "0001961", "callere164" : "61396895258", "customer_name" : "Welcoserver" }, "sort" : [ 1545263998000 ] } ] } } } }, { "_index" : "cdr-2018-12-10", "_type" : "_doc", "_id" : "T9vTfG4BBXMgK0EA3uqX", "_score" : null, "_routing" : "4395682", "_source" : { "machine_id" : "a7488aa0084cbf15542c1b0267b42d4", "hold_time" : 12, "call_ip_province" : "美國", "called9" : "644395682", "start_time" : "2018-12-19 23:59:57", "called_ip_province" : "法國", "fee_prefix" : "778801", "callere164" : "17baginamasud", "customer_name" : "amjad=vai" }, "fields" : { "machine_id" : [ "a7488aa0084cbf15542c1b0267b42d4e" ] }, "sort" : [ 1545263997000 ], "inner_hits" : { "pg" : { "hits" : { "total" : { "value" : 10000, "relation" : "gte" }, "max_score" : null, "hits" : [ { "_index" : "cdr-2018-12-10", "_type" : "_doc", "_id" : "T9vTfG4BBXMgK0EA3uqX", "_score" : null, "_routing" : "4395682", "_source" : { "machine_id" : "a7488aa0084cbf15542c1b0267b42d4e", "hold_time" : 12, "call_ip_province" : "美國", "called9" : "644395682", "softswitchd_name" : "MBX3000|5351ce8", "start_time" : "2018-12-19 23:59:57", "called_ip_province" : "法國", "fee_prefix" : "778801", "callere164" : "17baginamasud", "customer_name" : "amjad=vai" }, "sort" : [ 1545263997000 ] }, { "_index" : "cdr-2018-12-10", "_type" : "_doc", "_id" : "TtvTfG4BBXMgK0EA3uqX", "_score" : null, "_routing" : "2455869", "_source" : { "machine_id" : "a7488aa0084cbf15542c1b0267b42d4e", "hold_time" : 22, "call_ip_province" : "法國", "called9" : "872455869", "softswitchd_name" : "MBX3000|5351ce5", "start_time" : "2018-12-19 23:59:45", "called_ip_province" : "法國", "fee_prefix" : "228801", "callere164" : "122122", "callerproduct_id" : "VOS3000 V2.1.4.0", "customer_name" : "zahintel" }, "sort" : [ 1545263985000 ] } ] } } } }