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