我需要在其中一个索引中进行聚合+排序+分页.
我了解了弹性搜索的内部功能,
我有5个总分片,它将对各个分片进行排序并获取结果,默认情况下,每个分片将返回10个记录.然后再对50条记录进行排序,它将获取前10条记录,因为默认大小为10.
输出继电器:
聚合结果在名为"aggregations"的单独字段中返回.为了在此聚合数据中进行分页,大小和from不起作用.
厌倦了做termBuilder.size(500),现在根据这个链接的逻辑是不同的(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation .html)
这会导致数据不准确.
任何人都可以建议我如何处理聚合+分页.
Vik*_*mar 15
是的,可以分页+排序+搜索elasticsearch打开链接。Elasticsearch在 v6.X 及更高版本中支持Bucket Sort Aggregation 。此bucket_sort使用terms/date_histogram存储桶中的所有记录并应用于该存储桶。因此,对于这种情况,我们必须保持存储桶大小足够大或大于存储桶记录,以便将所有可能的记录保留在存储桶中。示例如下...
{
"aggs": {
"aggs1": {
"terms": {
"field": "field_name.keyword",
// We can do sort here also
"size": 1000000 // Keep this size big integer. This keep all possible result in bucket
},
"aggs": {
"bucket_sort": {
"bucket_sort": {
"sort": [{
"_key": {
"order": "asc"
}
}],
// This "from" and "size" use above terms bucket size. it applies over available bucket data [This one give actual result]
// Bellow is standard pagination as we do
"from": 0,
"size": 10
}
}
}
}
},
"size": 0
}
Run Code Online (Sandbox Code Playgroud)
Nis*_*ant 13
在elasticsearch中,不可能对聚合进行分页.如果指定了大小,查询将不会给出准确的结果.因此,进行排序和分页的唯一方法是给出大小为0并返回所有文档,然后通过将所有结果累积到列表中以获得进一步操作来获得所需结果.
| 归档时间: |
|
| 查看次数: |
21349 次 |
| 最近记录: |