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

网站内容优化的重要性网站改版合同

网站内容优化的重要性,网站改版合同,网页制作与设计作业在哪搜题,网站建设面试自我介绍1.什么是 Composite Aggregation#xff1f; Composite Aggregation 是 Elasticsearch 中的一种特殊聚合方式#xff0c;适用于需要分页展示的聚合结果。它与传统的聚合方式不同#xff0c;采用了基于游标的分页模型。这种聚合方式可以高效地处理多级聚合中的所有桶#x…1.什么是 Composite Aggregation Composite Aggregation 是 Elasticsearch 中的一种特殊聚合方式适用于需要分页展示的聚合结果。它与传统的聚合方式不同采用了基于游标的分页模型。这种聚合方式可以高效地处理多级聚合中的所有桶并支持分页功能。 2.基本结构 一个典型的 Composite Aggregation 查询如下 json GET /your_index_name/_search { size: 0, aggs: { my_composite_agg: { composite: { size: 10, sources: [ { field1: { terms: { field: your_field_name1 } } }, { field2: { terms: { field: your_field_name2 } } } ] } } } } 在上述查询中 • sources定义了按哪些字段分组字段顺序决定了分组键bucket key的生成顺序。 • size定义每页的桶数量。 • 响应结果中的after_key用于获取下一页数据。 3.分页机制 Composite Aggregation 的分页机制通过after参数实现。每次查询返回指定数量的桶并通过after_key提供下一页的游标。这种方式可以确保分页查询中数据无重复、无遗漏。 例如 json GET /your_index_name/_search { size: 0, aggs: { my_composite_agg: { composite: { size: 10, sources: [ { field1: { terms: { field: your_field_name1 } } } ], after: { field1: last_value_of_field1 } } } } } 4.排序和方向 Composite Aggregation 支持对每个值源进行排序可以通过设置order参数为asc升序或desc降序。 json GET /your_index_name/_search { size: 0, aggs: { my_composite_agg: { composite: { size: 10, sources: [ { field1: { terms: { field: your_field_name1, order: desc } } }, { field2: { terms: { field: your_field_name2, order: asc } } } ] } } } } 5.处理缺失值 默认情况下缺少指定字段值的文档会被忽略。通过设置missing_bucket参数为true可以将这些文档包含在响应中。 json GET /your_index_name/_search { size: 0, aggs: { my_composite_agg: { composite: { size: 10, sources: [ { field1: { terms: { field: your_field_name1, missing_bucket: true } } } ] } } } } 6.性能优化 Composite Aggregation 的设计特别适合大规模数据的聚合和分页是传统from size分页方法的高效替代方案。为了进一步优化性能建议在索引中设置索引排序使其与复合聚合中的源顺序部分或完全匹配。 7.应用场景 Composite Aggregation 适用于以下场景 • 需要分页展示聚合结果。 • 处理大规模数据时需要高效分页和排序。 • 需要对多个字段进行分组和聚合。 通过上述特性Composite Aggregation 提供了一种强大且灵活的方式来处理复杂的聚合需求特别是在需要分页和排序的场景中表现出色。 好的下面我将通过一个具体的例子来展示如何使用 Composite Aggregation 来实现分页聚合查询。假设我们有一个电商数据集其中包含商品的销售记录我们希望按日期和商品类别进行分组并计算每个分组的销售总额。 数据示例 假设我们的索引名为sales其中的文档如下 json { timestamp: 2024-01-01T00:00:00Z, product: T-shirt, category: Clothing, price: 20 } { timestamp: 2024-01-01T00:00:00Z, product: Jeans, category: Clothing, price: 40 } { timestamp: 2024-01-02T00:00:00Z, product: T-shirt, category: Clothing, price: 20 } { timestamp: 2024-01-02T00:00:00Z, product: Laptop, category: Electronics, price: 1000 } 查询目标 我们希望按日期和商品类别进行分组并计算每个分组的销售总额。同时我们希望分页显示结果每页显示 2 个分组。 第一页查询 首先我们查询第一页的结果 json GET /sales/_search { size: 0, aggs: { sales_by_date_and_category: { composite: { size: 2, sources: [ { date: { date_histogram: { field: timestamp, calendar_interval: 1d } } }, { category: { terms: { field: category } } } ] }, aggregations: { total_sales: { sum: { field: price } } } } } } 解释 • size:每页返回的分组数量。 • sources:定义了两个分组字段 • date:按日期分组每天一个桶。 • category:按商品类别分组。 • aggregations:在每个复合桶中计算销售总额。 查询结果 返回的结果如下 json { aggregations: { sales_by_date_and_category: { after_key: { date: 1704115200000, category: Clothing }, buckets: [ { key: { date: 1704028800000, category: Clothing }, doc_count: 2, total_sales: { value: 60 } }, { key: { date: 1704115200000, category: Clothing }, doc_count: 1, total_sales: { value: 20 } } ] } } } 解释 • buckets:包含两个分组 • 第一个分组2024-01-01的Clothing类别销售总额为 60。 • 第二个分组2024-01-02的Clothing类别销售总额为 20。 • after_key:提供了下一页的游标。 第二页查询 使用after_key查询下一页的结果 json GET /sales/_search { size: 0, aggs: { sales_by_date_and_category: { composite: { size: 2, sources: [ { date: { date_histogram: { field: timestamp, calendar_interval: 1d } } }, { category: { terms: { field: category } } } ], after: { date: 1704115200000, category: Clothing } }, aggregations: { total_sales: { sum: { field: price } } } } } } 查询结果 返回的结果如下 json { aggregations: { sales_by_date_and_category: { after_key: { date: 1704115200000, category: Electronics }, buckets: [ { key: { date: 1704115200000, category: Electronics }, doc_count: 1, total_sales: { value: 1000 } } ] } } } 解释 • buckets:包含一个分组 • 2024-01-02的Electronics类别销售总额为 1000。 • after_key:提供了下一页的游标。 通过这种方式我们可以高效地分页查询聚合结果而不会遗漏或重复任何数据。 好的接下来我们继续探讨如何处理更多分页结果以及如何优化和扩展这个查询。 继续分页查询 假设我们继续查询下一页使用上一页返回的after_key json GET /sales/_search { size: 0, aggs: { sales_by_date_and_category: { composite: { size: 2, sources: [ { date: { date_histogram: { field: timestamp, calendar_interval: 1d } } }, { category: { terms: { field: category } } } ], after: { date: 1704115200000, category: Electronics } }, aggregations: { total_sales: { sum: { field: price } } } } } } 查询结果 如果返回结果为空说明已经到达最后一页 json { aggregations: { sales_by_date_and_category: { buckets: [] } } } 这表明所有分组已经查询完毕。 性能优化 为了进一步优化性能可以考虑以下几点 1. 设置合理的size参数根据实际需求设置合适的分页大小避免过大或过小。 2. 索引排序如果数据量很大可以在索引创建时设置索引排序使其与聚合的字段顺序一致。例如 json PUT /sales { settings: { index: { sort.field: [timestamp, category], sort.order: [asc, asc] } } } 3. 禁用track_total_hits在分页查询中通常不需要统计总命中数可以通过设置track_total_hits: false来节省资源。 扩展应用 Composite Aggregation 不仅可以用于分页查询还可以结合其他聚合功能例如 • 计算平均值在每个分组中计算平均销售额。 json aggregations: { average_sales: { avg: { field: price } } } • 多级分组可以增加更多分组字段例如按地区分组。 json sources: [ { date: { date_histogram: { field: timestamp, calendar_interval: 1d } } }, { category: { terms: { field: category } } }, { region: { terms: { field: region } } } ] 总结 通过 Composite Aggregation我们可以高效地实现分页聚合查询避免了传统分页方法如from size在大规模数据下的性能瓶颈。同时它还支持灵活的排序、多级分组和子聚合功能能够满足复杂的业务需求。 以下是使用composite aggregation结合terms、histogram、date_histogram和geotile_grid的示例 1.terms类型的composite aggregation 以下示例对authors索引中的author_name字段进行terms聚合 json GET authors/_search { size: 0, aggs: { our_buckets: { composite: { sources: [ { authors: { terms: { field: author_name } } } ] } } } } 2.histogram类型的composite aggregation 以下示例对authors索引中的books_number字段进行histogram聚合区间设置为5 json GET authors/_search { size: 0, aggs: { our_buckets: { composite: { sources: [ { booksnum: { histogram: { field: books_number, interval: 5 } } } ] } } } } 3.date_histogram类型的composite aggregation 以下示例对books索引中的publish_date字段进行date_histogram聚合时间间隔设置为一周 json GET books/_search { size: 0, aggs: { our_buckets: { composite: { sources: [ { week: { date_histogram: { field: publish_date, calendar_interval: 1w } } } ] } } } } 4.geotile_grid类型的composite aggregation 以下示例对authors索引中的authors_location字段进行geotile_grid聚合精度设置为6 json GET authors/_search { size: 0, aggs: { our_buckets: { composite: { sources: [ { authorsloc: { geotile_grid: { field: authors_location, precision: 6 } } } ] } } } } 5.组合使用多种聚合类型 以下示例同时使用date_histogram和terms聚合 json GET books/_search { size: 0, aggs: { our_buckets: { composite: { sources: [ { week: { date_histogram: { field: publish_date, calendar_interval: 1w } } }, { authors: { terms: { field: author_name } } } ] } } } } 这些示例展示了如何在composite aggregation中使用不同类型的聚合以满足不同的数据分析需求。
http://www.dnsts.com.cn/news/202891.html

相关文章:

  • 甘肃网站制作公司网站建设维护学什么科目
  • 网站建设方案选择实现方式中山有网站建设公司吗
  • 网站开发设计哪家好培训机构有哪些
  • 做爰全过程免费的视网站博罗企业网站建设
  • 网站 支持建设单位上海医疗网站建设
  • 网站建设金思扬网络it外包的收益主要有哪些
  • 榆林做网站的公司美食网站建设策划书
  • 自己的网站怎么做网盘3 建设营销型网站流程
  • 有没有一种app类似网站建设个人备案的网站可以做淘宝客吗
  • 可以做照片书的网站google官方版下载
  • 泉州建设银行网站网站开发设计报告书怎么写
  • 重庆市建设考试报名网站网站ui设计公司
  • 网站设配色网络组建与维护试题
  • 做k12网站wordpress 获取模板路径
  • 举报的网站是国外的域名和空间广西麒铭建设有限公司网站
  • 二维码导航网站源码网站代理工具
  • 营销网站文章去那找怎样做免费企业网站
  • 网站假备案举报net做网站
  • 太原搭建网站的公司哪家好网站建设与管理是课程
  • 国内优秀网站设计欣赏家在龙岗
  • 网站jsp充值和体现系统怎么做wordpress静态页没有标题
  • 同一虚拟空间做两个网站东莞市国外网站建设哪家好
  • 给企业做网站前景做网站的成本在哪
  • 呼和浩特网站网站建设wordpress随机
  • 网站美术视觉效果布局设计微信的官方网站怎么做
  • 天津网站制作计划建材建设网站
  • 表格做的网站影响收录现代简约客厅
  • 智能建网站软件怎么往网站里做游戏
  • 怎样用ps做网站的效果图动漫设计招聘信息
  • 个人博客网站模板免费商务网站建设试题