elasticsearch 字段摺疊

概要:字段摺疊其實就是聚合,不過在es中字段摺疊是單獨一個模塊,聚合也是一個模塊,在某些時候兩者可以實現同樣的功能,字段摺疊是簡單的聚合,而聚合aggs則是一個大模塊,裏面有更多更詳細的各種聚合功能。本文只說字段摺疊,不講解agg模塊,感興趣的話你可以去官網。

  1. 字段摺疊:

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
                  ]
                }
              ]
            }
          }
        }
      }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章