首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用elasticsearch-dsl-py进行范围聚合

使用elasticsearch-dsl-py进行范围聚合
EN

Stack Overflow用户
提问于 2015-04-28 03:24:38
回答 1查看 3.9K关注 0票数 2
代码语言:javascript
复制
POST /_search
{
"size": 0,
"aggs": {
    "by_grp" : {
        "terms": {
            "field": "grpId",
            "size": 0
        },
        "aggs": {
            "twitter_count": {
                "range": {
                    "field": "twitter.followers",
                    "ranges": [
                        { "to" : 501},
                        { "from" : 501, "to" : 1001},
                        { "from" : 1001, "to" : 5001},
                        { "from" : 5001}
                    ]
                },
                "aggs" : {
                    "email_addy": {
                        "terms" : {
                            "field": "email.value",
                            "size": 0
                        }
                    }
                }
            }
        }
    }
}
}

使用elastic-search-dsl,我的python代码是

代码语言:javascript
复制
from datetime import datetime
from elasticsearch_dsl import DocType, String, Date, Integer, Search, Q
from elasticsearch_dsl.connections import connections
from elasticsearch import Elasticsearch

client = connections.create_connection(hosts=['http://somehost:9200'])
s = Search(using=client, index="dexy", doc_type="grp")

s.aggs.bucket('by_grp', 'terms', field='grpId', size=0) \
.bucket('twitter_count', 'range', field='twitter.followers')

我应该从哪里开始定义范围,就像在CURL代码中一样?关于这个主题的GIT和docs目前还很少。找不到任何示例。

EN

回答 1

Stack Overflow用户

发布于 2015-04-29 00:55:13

这看起来很奇怪,因为它似乎没有完全遵循缩进/行连续规则,但这是有效的。

代码语言:javascript
复制
s.aggs.bucket('by_grp', 'terms', field='grpId', size=0) \
.bucket('twitter_count', 'range', field='twitter.followers',
    ranges=[
        {'to': 5001},
        {'from': 5001, 'to': 10001},
        {'from': 10001, 'to': 50001},
        {'from': 50001}
    ]
) \
.bucket('email_addy', 'terms', field='email.value', size=0)

注意,大小=0意味着查询应该返回该项目的所有结果,而不是默认的10。因此,它将返回所有grpId的结果,而不只是10,并包括落入范围存储桶中的所有电子邮件。

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

https://stackoverflow.com/questions/29904261

复制
相关文章

相似问题

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