当前位置: 首页 > wzjs >正文

承德百度网站建设广州市最新消息

承德百度网站建设,广州市最新消息,vi设计整套,长沙做暑假实践活动网站文章目录 前言一、主要使用场景二、collapse 的基本用法三、inner_hits 作用:获取分组内的更多信息四、collapse 是否影响评分?五、collapse 的性能影响六、collapse vs. terms 聚合对比七、适用场景总结总结 前言 在 Elasticsearch 查询中,…

文章目录

  • 前言
  • 一、主要使用场景
  • 二、collapse 的基本用法
  • 三、inner_hits 作用:获取分组内的更多信息
  • 四、collapse 是否影响评分?
  • 五、collapse 的性能影响
  • 六、collapse vs. terms 聚合对比
  • 七、适用场景总结
  • 总结


前言

在 Elasticsearch 查询中,collapse(字段折叠)用于对指定字段的值进行分组,每组只返回一个文档。它的作用类似于 SQL 里的 GROUP BY,但 collapse 不会聚合所有字段,而是仅折叠查询结果的显示方式。


一、主要使用场景

collapse 主要用于以下场景:

  • 去重搜索:在电商、招聘、社交等场景中,可能会有多个文档代表同一个实体(如同一家公司不同的职位、同一商品的不同库存记录),collapse 可以确保只返回一个文档,避免重复展示。

  • 分组展示:例如,新闻搜索时,每个来源只返回一篇文章,以便提供多样化的搜索结果。

  • 提高查询效率:相比于 terms 聚合,collapse 只返回一个文档而不是所有文档,减少了数据传输和计算负担。

二、collapse 的基本用法

使用 collapse 需要在 query 之外的 collapse 字段中指定一个字段名。该字段必须是 keyword、numeric 或 date 类型,且不能是 analyzed 字段。

示例 1:对 company_id 进行折叠

{"query": {"match": {"title": "软件工程师"}},"collapse": {"field": "company_id"}
}
  • 这将确保结果中每个 company_id 只返回一个文档(该公司下最相关的一条招聘信息)。

三、inner_hits 作用:获取分组内的更多信息

默认情况下,collapse 只会返回每个分组中的一个文档。如果想要在每个分组中查看更多文档,可以使用 inner_hits。

示例 2:每个 company_id 下最多返回 3 条招聘信息

{"query": {"match": {"title": "软件工程师"}},"collapse": {"field": "company_id","inner_hits": {"name": "top_jobs_per_company","size": 3,"sort": [{ "salary": "desc" }]}}
}
  • 这将在每个 company_id 分组下返回最多 3 条职位信息,并按 salary 降序排列。

四、collapse 是否影响评分?

  • 影响主查询结果的评分排序:

    • collapse 不会影响查询的评分计算,但它会影响最终返回的文档,因为它筛选掉了一些评分较低的文档。
  • collapse 默认返回每个分组中评分最高的文档,因此在 collapse 后,最终结果仍然是按 score 排序的。

  • inner_hits 中的评分:

    • inner_hits 依然会按照 query 的评分排序,或者可以自定义 sort 排序规则。

五、collapse 的性能影响

collapse 相比 terms 聚合(terms 会返回所有匹配的文档并做聚合)更加轻量级,因此对于某些场景,它可以显著提高查询效率。

✅ 性能优势

  • 减少数据传输量: 只返回每个分组的一条数据,避免返回大量重复数据。

  • 比 terms 聚合更轻量: collapse 仅适用于搜索阶段,而 terms 聚合需要额外的计算和存储开销。

  • 更适合大数据量: 适用于上百万甚至上亿级别数据的去重查询,而 terms 聚合可能会因为 bucket 过多导致 OOM。

⚠️ 性能注意事项

  • 字段必须是 keyword、numeric 或 date 类型,不能是 text(未索引的文本字段)。

  • inner_hits 可能影响性能: inner_hits 需要加载更多文档,会增加查询开销。

  • 不适用于分页查询: collapse 仅影响当前 from + size 范围的文档,如果需要分页,每页可能会返回相同的 group,需要用 search_after 或 scroll 处理。

六、collapse vs. terms 聚合对比

特性collapseterms 聚合
作用每组返回一个文档计算每组的所有文档,并可做统计
适用场景仅展示每个分组的一个代表文档需要统计、分析所有分组数据
影响评分不影响计算方式,但影响最终返回的文档只用于统计,不影响查询的评分
内存占用 低(仅保留 from + size 范围的折叠数据)高(可能需要存储所有匹配文档)
适用于大数据可能会 OOM

七、适用场景总结

业务场景推荐使用
只想展示每个分组的一个结果,如每家公司最多一个职位✅ collapse
需要统计各分组的所有数据,如统计不同公司的职位总数❌ 使用 terms 聚合
需要分页且分组后仍能正确分页❌ terms 聚合 或 search_after
需要在一个分组下获取多个结果(但不是所有)✅ collapse + inner_hits

总结

  • collapse 适用于去重搜索,如展示唯一的公司、商品或用户等,而不会影响评分计算方式。

  • collapse 比 terms 聚合更高效,尤其是对于大数据场景。

  • inner_hits 可用于查看分组内更多文档,但可能影响查询性能。

  • collapse 适合搜索场景,而 terms 聚合更适合统计和分析。

如果你的数据量较大,并且希望提高查询效率,同时避免返回重复数据,那么 collapse 是一个非常好的选择!

http://www.dtcms.com/wzjs/309035.html

相关文章:

  • 通化县住房和城乡建设局网站整站优化多少钱
  • 鼎豪网站建设广州seo团队
  • 公司做网站需要给百度交钱吗seo承诺排名的公司
  • 武汉网站设计的学校seo平台代理
  • 上海网站建设百家号产品推广计划书怎么写
  • 百姓网官网首页排名优化是怎么做的
  • 房产中介网站开发与设计代码百度小说排行榜完本
  • 互联网网站设计网站发布与推广怎么写
  • 网站建设服务合同书怎么弄一个自己的网址
  • 富民网站建设优化网站收费标准
  • 商城建站系统百度在线使用网页版
  • 网站虚拟服务器重庆搜索排名提升
  • 企业建设网站专业服务互联广告精准营销
  • 网站建设中模版河南今日头条最新消息
  • 城固县网站建设网络营销成功的案例及其原因
  • 长沙优化网站关键词站长之家app下载
  • 国际网站怎么做第一推广网
  • 滨州网站建设有实力引流最好的推广方法
  • wordpress添加邀请码输入框重庆网络seo公司
  • 公司门户网站商品标题关键词优化
  • 用html编写淘宝网站怎么做百度统计app
  • 娄底做网站windows优化大师免费
  • 出色的网站企业员工培训课程内容
  • 手机网站网页设计搜索引擎调价工具哪个好
  • 有没有可以做网站动图的软件高端建站
  • 临沂百度公司地址安卓优化软件
  • 做网站一般链接什么数据库上海公司网站seo
  • 哪个网站学做凉皮注册网址
  • 户型图在线设计网站推广app的营销方案
  • 有趣的网站游戏优化设计英语