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

过滤Elasticsearch结果以仅包含基于一个字段值的唯一文档

蔺劲
2023-03-14
问题内容

我所有的文档都有一个uid带有ID 的字段,该ID将文档链接到用户。有多个文档相同uid

我想对所有文档执行搜索,每个文档仅返回得分最高的文档uid

选择相关文档的multi_match查询是一个简单的查询。


问题答案:

您需要一个top_hits汇总。

对于您的具体情况:

{
  "query": {
    "multi_match": {
      ...
    }
  },
  "aggs": {
    "top-uids": {
      "terms": {
        "field": "uid"
      },
      "aggs": {
        "top_uids_hits": {
          "top_hits": {
            "sort": [
              {
                "_score": {
                  "order": "desc"
                }
              }
            ],
            "size": 1
          }
        }
      }
    }
  }
}

上面的查询会执行您的multi_match查询并基于汇总结果uid。对于每个uid存储桶,它仅返回一个结果,但是在存储桶中的所有文档都按照_score后代顺序排序之后。



 类似资料:
  • 问题内容: 如何通过所有多词搜索仅获取经过过滤的匹配结果。我有这个示例表,其中titleid是一个映射int字段,personid是一个关键字: 删除结果为: 使用这样的示例查询: 我得到以下结果: 也许这会有所帮助,我在sql中进行了查询并获得了预期的结果。我所做的是让查询给我与搜索到的参数数量匹配的titleid之和。这只是为了更多地自我解释,其思想是使用elasticsearch。 问题答案

  • 下面是我的搜索响应示例,检索到4个结果。 现在,我想根据下面的标准,根据特定的“dir”字段值过滤上述搜索结果。 在且仅在以下情况下将搜索结果包含在响应中: 如果“dir”字段值等于“/shared”或“/private/hitesh” 如果“dir”字段值以“/shared/”或“/private/hitesh/”开头,则为其他 如何在ElasticSearch中实现上述功能?

  • 如何使elasticsearch查询返回没有_internal字段的结果,如_index、_type? 原因:对于几个页面,我使用AJAX调用来获取结果,而不是在服务器上呈现整个网页。但是为每个文档公开_index&_type内部字段不仅是冗余的(带宽),而且还暴露了索引和类型名称(安全问题)。 请救命!

  • 是否有一种方法可以像在相关问题中看到的那样设置一个agg查询?我考虑过的另一个选择是用一个特殊的关键字段(即“x_a”、“x_b”等)索引对象。然后我可以简单地在这片场地上Rest。我不确定哪一种是首选方法,但我个人不喜欢用额外的元数据索引数据。

  • 我有一个弹性搜索映射,包含一个语言代码的字段,如EN、DE、ES、FR等。如果用户开始用英语搜索,我想在搜索结果中增加所有英语文档;法语、西班牙语、德语等也一样。 我想,应该这样做: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function

  • 问题内容: 我在页面上使用angularjs。我想过滤JSON对象中的值,以便不存在冗余。但是我没有找到任何方法可以从角度ng-repeat中获得唯一值。反正有做吗? 好的,这是有关该问题的一些描述。我有这种格式的JSON。我从服务中获取此JSON。因此,我们不能期望重复数据如何发生。 我希望输出JSON不包含重复的元素,这样我的输出将是这样的 问题答案: 您可以使用已定义过滤器的Angular