Elasticsearch,如何将ip long转换为字符串,以获取ip子网aggs

时间:2015-08-09 19:31:33

标签: elasticsearch

有一个名为ip的字段,它映射到ip类型,现在我想将aggs作为/ 24个子网,我使用脚本" doc [' ip']。value& 0xffffff00"获取ip的长值,如何将其转换为ip string ???

{
  "_source": [
    "host",
    "ip"
  ],
  "aggs": {
    "ip_subnet": {
      "terms": {
        "script": "doc['ip'].value & 0xffffff00"
      }
    }
  },
  "size": 0
}

我没有从弹性网站上找到任何结果,我想知道是否有另一种方式来接收子网aggs?

非常感谢,原谅我的游泳池英语;)

1 个答案:

答案 0 :(得分:0)

最后,我完成了定义一个longToIp类似的脚本......也许还有另一个好的解决方案......

"aggs": {
    "ip_subnet": {
      "terms": {
        "script": "ip=doc['ip'].value & 0xffffff00;octet3 = (int) ((ip >> 24) % 256);octet2 = (int) ((ip >> 16) % 256);octet1 = (int) ((ip >> 8) % 256);octet0 = (int) ((ip) % 256);ipstr=octet3 + '.' + octet2 + '.' + octet1 + '.' + octet0;return ipstr+\"/24\";"
      }
    }
  },