har*_*der 5 python elasticsearch elasticsearch-dsl
我正在使用elasticsearch-dsl python库连接到elasticsearch并进行聚合。
我正在关注代码
search.aggs.bucket('per_date', 'terms', field='date')\
.bucket('response_time_percentile', 'percentiles', field='total_time',
percents=percentiles, hdr={"number_of_significant_value_digits": 1})
response = search.execute()
Run Code Online (Sandbox Code Playgroud)
这工作正常,但仅返回10个结果 response.aggregations.per_ts.buckets
我想要所有结果
我试图用一种溶液size=0中提到了这个问题
search.aggs.bucket('per_ts', 'terms', field='ts', size=0)\
.bucket('response_time_percentile', 'percentiles', field='total_time',
percents=percentiles, hdr={"number_of_significant_value_digits": 1})
response = search.execute()
Run Code Online (Sandbox Code Playgroud)
但这会导致错误
TransportError(400, u'parsing_exception', u'[terms] failed to parse field [size]')
Run Code Online (Sandbox Code Playgroud)
我遇到过同样的问题。我终于找到了这个解决方案:
s = Search(using=client, index="jokes").query("match", jks_content=keywords).extra(size=0)
a = A('terms', field='jks_title.keyword', size=999999)
s.aggs.bucket('by_title', a)
response = s.execute()
Run Code Online (Sandbox Code Playgroud)
之后2.x,size=0对于所有存储桶结果将不再有效,请参阅此线程。在我的示例中,我只是将大小设置为 999999。您可以根据自己的情况选择一个较大的数字。
建议为大小在 1 到 2147483647 之间的数字明确设置合理的值。
希望这可以帮助。
fmd*_*lle -2
您应该阅读文档。
所以在你的情况下,应该是这样的:
search.aggs.bucket('per_date', 'terms', field='date')\
.bucket('response_time_percentile', 'percentiles', field='total_time',
percents=percentiles, hdr={"number_of_significant_value_digits": 1})[0:50]
response = search.execute()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1841 次 |
| 最近记录: |