一尘不染

如何在Elasticsearch中按孩子数对父母排序

elasticsearch

我的索引中有parent与-
child相关的文档,并希望获取按孩子数排序的父母名单。有什么办法吗?我正在使用Elasticsearch1.5.1

现在,通过使用inner_hits功能,我可以轻松获得子文档的数量以及父查询的结果,但是似乎无法inner_hits.{child_type_name}.hits.total从脚本或搜索/评分功能访问值。有任何想法吗?


阅读 290

收藏
2020-06-22

共1个答案

一尘不染

好吧,我终于找到了答案。感谢@doctorcal在#elasticsearch
IRC 上的提示

正如我在这个问题提到的,我们可以使用每个家长让孩子的名单一起inner_hitsElasticsearch1.5。

为了能够按照孩子的数量对父母进行排序,我们需要使用一个小技巧-
将孩子的数量放入父母的分数中(默认情况下用于排序)。为此,我们只sumhas_child查询使用分数模式:

{
    "query": {
        "has_child": {
            "type": "comment",
            "score_mode": "sum",
            "query": {
                "match_all": {}
            },
            "inner_hits": {}
        }
    }
}

注意:此查询有一个限制-似乎您无法保留有关初始分数(查询的相关分数)的信息,因为我们将其替换为子代数。

2020-06-22