概要:字段折叠其实就是聚合,不过在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 ] } ] } } } }