为什么我得到的桶数总是等于聚合方面的指定大小?
Why am I getting number of buckets always equal to the specified size in terms aggregations?
我是弹性搜索的新手,我正在使用术语聚合来仅获取基于索引字段的唯一文档。我在查询中指定了唯一文档的最大大小,为什么存储桶计数总是等于大小?
{
"aggs": {
"name": {
"terms": {
"field": "fieldname",
"size": 10000
}
}
}
}
为什么我得到 10000 个桶,而唯一文档可能少于这个数量?
10000 是查询中 returned 文档数量的上限。您的索引将拥有超过 10000 条记录。要获得实际计数使用值 count api
GET index/_count
OR
{
"size": 0,
"aggs": {
"total_doc_count": {
"value_count": {
"field": "fieldname"
}
}
}
}
要在一个查询中获取超过 10000 个文档,您必须使用 scroll api。
POST /index-name/_search?scroll=1m --> scroll context
{
"size": 10000, --> will return docs in chunk of 10,000
"query": {
"match_all": {}
}
}
POST /_search/scroll
{
"scroll" : "1m",
"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" --> you will get from previous request
}
如果只有 100 个文档,术语聚合将 return 只有 100 而不是 10000
我是弹性搜索的新手,我正在使用术语聚合来仅获取基于索引字段的唯一文档。我在查询中指定了唯一文档的最大大小,为什么存储桶计数总是等于大小?
{
"aggs": {
"name": {
"terms": {
"field": "fieldname",
"size": 10000
}
}
}
}
为什么我得到 10000 个桶,而唯一文档可能少于这个数量?
10000 是查询中 returned 文档数量的上限。您的索引将拥有超过 10000 条记录。要获得实际计数使用值 count api
GET index/_count
OR
{
"size": 0,
"aggs": {
"total_doc_count": {
"value_count": {
"field": "fieldname"
}
}
}
}
要在一个查询中获取超过 10000 个文档,您必须使用 scroll api。
POST /index-name/_search?scroll=1m --> scroll context
{
"size": 10000, --> will return docs in chunk of 10,000
"query": {
"match_all": {}
}
}
POST /_search/scroll
{
"scroll" : "1m",
"scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==" --> you will get from previous request
}
如果只有 100 个文档,术语聚合将 return 只有 100 而不是 10000