当前位置: 首页 > 面试题库 >

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

柳培
2023-03-14
问题内容

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

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


问题答案:

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

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

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

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

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



 类似资料:
  • 问题内容: 最初,我一直在尝试获取父母的名单以及每个父母的一个最近的孩子。我已经知道如何使用以下查询 但是问题是,结果不包括没有孩子的父母。添加也无济于事。所以我想我可以对所有没有孩子的父母进行查询,然后将这两个查询合并为一个查询。但是我在建立这样的查询时遇到了麻烦。将不胜感激任何建议。 问题答案: 这是您的查询:

  • 这样不仅可以将转移页面的子元素放入数组,还可以将子元素的子元素放入数组。

  • d3.js树形布局是一个很棒的工具,但是它默认只允许孩子有一个单亲。我希望能够让孩子们有不止一个父母。我对树的默认行为提供的节点位置很满意。我想要的只是在默认树被计算出来之后,在没有孩子的父母和现有的孩子之间画出额外的对角线链接。我的脚本目前看起来像这样: 我试图使用根对象将父节点的子节点复制到无子节点,但无济于事(根对象的结构对我来说非常晦涩难懂)。 感谢任何帮助。 PS :我知道一个类似的问题

  • 问题内容: 我在 MySQL中* 有如下的 注释 表: * 用户可以添加 新的 注释,因为它们不是其他注释的子对象,所以将没有parent_id。用户还可以 回复 通过先前方法添加的评论,因此它们是主要评论的子级,例如在第二层级上。该 PARENT_ID 列表示父评论的ID,如果存在的话。如果注释没有父母,则默认 parent_id 为-1。 话虽如此,我想查询表中的所有注释,每个父项后跟其子级,

  • 问题内容: 因为我能够使用像 请让我知道如何使用_version做同样的事情。默认情况下,字段_version不支持Fielddata。所以可能是我缺少了一些东西。是否有要查询版本的特定设置?请帮忙! 问题答案: 您不能这样做,通常也不必这样做。看到这个线程:https : //discuss.elastic.co/t/filter-by–version-and-show–version-in-e

  • 问题内容: 我试图以这样一种方式编写SQL Server 2008查询,以便可以根据需要循环遍历输出和输出标头。我已经多次以错误的方式完成了这些工作,并让ColdFusion在页面中进行了艰苦的工作,但是需要在SQL Server中完成。 我希望查询结果集如下所示: 如果ParentID为0,则表示它是主要类别。如果ParentID大于0,则表示它是次要类别,是父级的子级。 因此,父母需要订购A-