簡體   English   中英

彈性搜索,通過存儲桶數而不是文檔來限制結果大小

[英]Elastic Search, limit results size by buckets count instead of documents

我有大約數以千計的分類的數百萬個日志文檔,我想搜索所有日志條目,然后將每個日志條目放入正確的存儲桶中,其中每個存儲桶都是分類的(具有分類的唯一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
               ],
            }
         }
      }
   }
}

我不確定這是否是您要的內容,但是您可以在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
               ],
            }
         }
      }
   }
}

如果您想查看聚合存儲桶下的實際文檔,可以使用top_hits聚合

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM