【问题标题】:Elastic Search, limit results size by buckets count instead of documents弹性搜索,通过桶数而不是文档限制结果大小
【发布时间】:2016-09-16 22:12:36
【问题描述】:

我有大约一千个分类的数百万个日志文档,我想搜索所有日志条目并将它们中的每一个放在正确的存储桶中,其中每个存储桶都是分类的(具有分类的唯一 ID)。我知道如何限制文档的数量,但是有没有办法限制桶的数量呢?

{  
   "size":10 #this limits by the docs length
    "aggregations": {
      "clfds": {
         "terms": {
            "field": "clsfd_id"
         }
      }
    },
   "sort":[  
      {  
         "clsfd_id":{  
            "order":"asc"
         }
      },
   ],
   "query":{  
      "filtered":{  
         "query":{  
            "match_all":{  

            }
         },
         "filter":{  
            "bool":{  
               "should":[  
                    #filled dynamically
               ],
            }
         }
      }
   }
}

【问题讨论】:

  • 基数聚合是一种度量聚合。您不使用术语聚合的任何原因?
  • @rajat 哦,我在问题中使用了错误的查询,已更正。
  • 在这种情况下,只需给它一个 'size' 参数,它会返回大约最高的结果。

标签: elasticsearch


【解决方案1】:

我不确定这是否是您所要求的,但您可以简单地使用 terms 聚合中的 size 属性来限制返回的存储桶数量:

{  
   "size":10 #this limits by the docs length
    "aggregations": {
      "clfds": {
         "terms": {
            "size": 50,
            "field": "clsfd_id"
         }
      }
    },
   "sort":[  
      {  
         "clsfd_id":{  
            "order":"asc"
         }
      },
   ],
   "query":{  
      "filtered":{  
         "query":{  
            "match_all":{  

            }
         },
         "filter":{  
            "bool":{  
               "should":[  
                    #filled dynamically
               ],
            }
         }
      }
   }
}

如果您想查看聚合桶下的实际文档,可以使用the top_hits aggregation

{
  "aggs": {
    "clfds": {
      "terms": {
        "field": "clsfd_id",
        "size": 50
      },
      "aggs": {
        "top_clfds_hits": {
          "top_hits": {
            "sort": [
              {
                "clsfd_id": {
                  "order": "asc"
                }
              }
            ],
            "size": 10
          }
        }
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多