2016-09-22 107 views
0

如果我有幾千(或成千上萬)nested評論的博客文章,我想檢索前10位博客文章。我只是使用size來控制我想要檢索的博客文章的數量,但我不確定如何限制我想要的評論數量的大小。ElasticSearch - 在查詢結果上限制嵌套集合的大小

例如這將返回前10名博客,帖子無限評論

GET myblog/_search 
{ 
    "size": 10, 
    "query": { 
     "match_all": {} 
    } 
} 

我嘗試inner_hits但它不爲我工作。當我使用時,我必須在嵌套註釋中進行查詢,我也禁用了源代碼(以避免檢索包含所有註釋的帖子),並且inner_hits結果會爲每個帖子提供每條評論(冗餘),即使在某些它是相同的父母職位。 我也想到了parent-child的方法,但這意味着會創建多個請求/查詢。

你知道如何限制查詢中嵌套集合的大小嗎?

我在尋找的是創建一個查詢,我可以做一些事情,比如獲得排名前5的評論的前10位博客文章。

回答

0

你可以試試這個查詢:

{ 
    "_source": false, 
    "fields":["your_fields"], 
    "size": 10, 
    "query": { 
     "match_all": {} 
    }, 
    "inner_hits" : { 
     "comments" : { 
      "path" : { 
       "comments" : { 
        "size":5, 
        "query" : { 
         "match_all": {} 
        } 
       } 
      } 
     } 
    } 
} 
+0

'inner_hits'似乎唯一的道路要走。我使用'source' -'exclude'而不是'fields'來從主結果中刪除嵌套對象(例如註釋)。 https://www.elastic.co/guide/en/elasticsearch/client/net-api/5.x/source-filtering-usage.html – Jaider