IP Range Aggregation(IP范围聚合)

原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-iprange-aggregation.html

译文链接 : IP Range Aggregation(IP范围聚合)

贡献者 : @于永超,ApacheCNApache中文网

IP Range Aggregation

就像专用的日期范围聚合一样,IP类型字段也有专用的范围聚合:

例子:

  1. {
  2. "aggs" : {
  3. "ip_ranges" : {
  4. "ip_range" : {
  5. "field" : "ip",
  6. "ranges" : [
  7. { "to" : "10.0.0.5" },
  8. { "from" : "10.0.0.5" }
  9. ]
  10. }
  11. }
  12. }
  13. }

响应结果:

  1. {
  2. ...
  3. "aggregations": {
  4. "ip_ranges": {
  5. "buckets" : [
  6. {
  7. "to": "10.0.0.5",
  8. "doc_count": 4
  9. },
  10. {
  11. "from": "10.0.0.5",
  12. "doc_count": 6
  13. }
  14. ]
  15. }
  16. }
  17. }

IP范围也可以定义为CIDR掩码

  1. {
  2. "aggs" : {
  3. "ip_ranges" : {
  4. "ip_range" : {
  5. "field" : "ip",
  6. "ranges" : [
  7. { "mask" : "10.0.0.0/25" },
  8. { "mask" : "10.0.0.127/25" }
  9. ]
  10. }
  11. }
  12. }
  13. }

响应结果:

  1. {
  2. "aggregations": {
  3. "ip_ranges": {
  4. "buckets": [
  5. {
  6. "key": "10.0.0.0/25",
  7. "from": "10.0.0.0",
  8. "to": "10.0.0.127",
  9. "doc_count": 127
  10. },
  11. {
  12. "key": "10.0.0.127/25",
  13. "from": "10.0.0.0",
  14. "to": "10.0.0.127",
  15. "doc_count": 127
  16. }
  17. ]
  18. }
  19. }
  20. }

Keyed Response

将keyed标志设置为true会将一个惟一的字符串键与每个bucket关联起来,并将范围作为散列而不是数组返回:

  1. {
  2. "aggs": {
  3. "ip_ranges": {
  4. "ip_range": {
  5. "field": "remote_ip",
  6. "ranges": [
  7. { "to" : "10.0.0.5" },
  8. { "from" : "10.0.0.5" }
  9. ],
  10. "keyed": true
  11. }
  12. }
  13. }
  14. }

响应结果:

  1. {
  2. ...
  3. "aggregations": {
  4. "ip_ranges": {
  5. "buckets": {
  6. "*-10.0.0.5": {
  7. "to": "10.0.0.5",
  8. "doc_count": 1462
  9. },
  10. "10.0.0.5-*": {
  11. "from": "10.0.0.5",
  12. "doc_count": 50000
  13. }
  14. }
  15. }
  16. }
  17. }

可以为每一个范围自定义key:

  1. {
  2. "aggs": {
  3. "ip_ranges": {
  4. "ip_range": {
  5. "field": "remote_ip",
  6. "ranges": [
  7. { "key": "infinity", "to" : "10.0.0.5" },
  8. { "key": "and-beyond", "from" : "10.0.0.5" }
  9. ],
  10. "keyed": true
  11. }
  12. }
  13. }
  14. }

响应结果:

  1. {
  2. ...
  3. "aggregations": {
  4. "ip_ranges": {
  5. "buckets": {
  6. "infinity": {
  7. "to": "10.0.0.5",
  8. "doc_count": 1462
  9. },
  10. "and-beyond": {
  11. "from": "10.0.0.5",
  12. "doc_count": 50000
  13. }
  14. }
  15. }
  16. }
  17. }