首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IP的前三个八位字节上的术语聚合

IP的前三个八位字节上的术语聚合
EN

Stack Overflow用户
提问于 2016-08-10 22:00:19
回答 1查看 200关注 0票数 1

我正在做一个分面的搜索UI,我想要添加的一个分面是IP字段的前三个八位字节。

例如,给定I为"192.168.1.1“、"192.168.1.2”、"192.168.2.1“的文档,我希望显示面"192.168.1 (2)”和"192.168.2 (1)“。

有没有我可以用来做这个的聚合?据我所知,范围聚合需要我预定义范围,而术语聚合只需要一个字段。

显然,对于我来说,另一种选择是将前三个八位字节作为一个单独的字段进行索引,但我当然希望避免这种情况。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-10 22:15:24

您可以添加分隔符为‘’的路径层次结构标记器。和一个自定义分析器,该分析器将标记器设置为您刚刚创建的标记器。

有关语法,请参阅以下问题:

Elasticsearch - using the path hierarchy tokenizer to access different level of categories

然后,您可以聚合术语,您将获得按每个数字组分组的结果

代码语言:javascript
运行
复制
{
    "key": "192",
    "doc_count": 10
},
{
    "key": "192.168",
    "doc_count": 10
},
...

在链接的答案中,有一种方法可以排除某些聚合级别。下面应该排除除具有3个数字级别的结果之外的所有结果。

代码语言:javascript
运行
复制
"aggs": {
    "ipaddr": {
        "terms": {
            "field": "your_ip_addr",
            "exclude": ".*",
            "include": ".*\\..*\\..*"
     }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pathhierarchy-tokenizer.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38875605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档