elasticsearch如何过滤后取出指定字段值

发布于 2022-09-11 18:37:54 字数 158 浏览 17 评论 0

比如我按照filter条件过滤到数据后,需要取出src_ip,dst_type,src_branch这些字段,如何在aggs里面通过过滤条件只取出这连个字段的数据呢
类似于sql中的
select name,sex score from student where home='china'

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

习惯成性 2022-09-18 18:37:54
    网上查了下,找到了,类似于这样
    "query":{
    "bool":{
    "must":{
    "term":{
    "rule_major_type":1,
    },
    "terms":{
    "rule_minor_type":[1,2,3,4]
    },
    "term":{
    "dst_type":1
    },
    "terms":{
    dst_branch_id:2
    }
    }
    }
    "aggs":{
    "xxx":{
    "terms":{
    
    }
    }
    "aggs":{
    "xxx"
    }
    }
    }
北笙凉宸 2022-09-18 18:37:54
"_source":["src_ip","dst_type","src_branch"]
酒解孤独 2022-09-18 18:37:54

要求查询结果只返回指定字段,在body顶层添加_source选项,以数组形式指定要返回的字段:

"query": {
    ...
},
"_source": ["src_ip", "dst_type", "src_branch"]

那么返回的hits.hits中的每个文档的_source将只包含src_ip, dst_typesrc_branch这三个字段

要求聚合结果只返回指定字段(通常只有top_hits等少数返回原始文档的聚合指标才有类似需求),在该bucket/metric的顶层添加_source选项,以数组形式指定要返回的字段:

"query": {
    ...
},
{
    "aggs": {
        "foobar": {
            "terms": {"field": "xxx"},
            "aggs": {
                "top3": {
                    "top_hits": {
                        "_source": {
                            "includes": ["src_ip", "dst_type", "src_branch"]
                        },
                        "size": 3
                    }
                }
            }
        }
    }
},
"size": 0

那么返回的聚合结果foobar.top3中的每个文档将只包含src_ip, dst_typesrc_branch这三个字段

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文