You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elasticsearch查询中获取penny字段的唯一结果?

基于Elasticsearch的penny字段获取唯一结果解决方案

你的现有查询已经能筛选出包含penny字段的文档,要基于该字段获取唯一结果,可通过以下两种常用方式实现:


方法一:使用collapse折叠字段(返回完整文档)

适合需要直接获取每个唯一penny值对应文档的场景,会按penny值分组,每组返回第一条匹配的文档:

{
  "query": {
    "exists": {
      "field": "penny"
    }
  },
  "collapse": {
    "field": "penny"
  },
  "from": 0,
  "size": 100
}
  • size控制返回的唯一分组数量,from用于分页查询更多结果
  • 若penny是text类型,需替换为其keyword子字段(如penny.keyword),否则会因分词导致去重不准确

方法二:使用聚合(灵活获取唯一值或对应文档)

仅获取唯一的penny值

如果只需要所有不重复的penny值,可通过terms聚合实现,不返回原始文档:

{
  "query": {
    "exists": {
      "field": "penny"
    }
  },
  "size": 0,
  "aggs": {
    "unique_penny_values": {
      "terms": {
        "field": "penny",
        "size": 10000  // 调整size获取更多唯一值,默认仅返回前10个
      }
    }
  }
}

获取每个唯一penny值对应的完整文档

结合terms聚合和top_hits子聚合,可自定义每组返回的文档内容:

{
  "query": {
    "exists": {
      "field": "penny"
    }
  },
  "size": 0,
  "aggs": {
    "unique_penny_groups": {
      "terms": {
        "field": "penny",
        "size": 100
      },
      "aggs": {
        "top_hit": {
          "top_hits": {
            "size": 1  // 每组仅返回一条文档,可调整返回数量
          }
        }
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者Abhinav Arya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:43:14