阿里云大佬叮嘱我务必要科普这个 Elasticsearch API

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 阿里云大佬叮嘱我务必要科普这个 Elasticsearch API

上截图是阿里云魏子珺大佬(阿里巴巴集团技术专家)周一叮嘱我的。

魏子珺大佬的早期分享参考:

2021 年 Elasticsearch 生态和技术峰会干货总结

1、啥 API 这么重要,阿里大佬要亲自叮嘱?

There’s a new API that supports analyzing the disk usage of each field of an index, including the entire index itself. The API estimates the disk usage of a field by iterating over its content and tracking the number of bytes read

https://www.elastic.co/guide/en/elasticsearch/reference/7.15/release-highlights.html#_index_disk_usage_api

POST kibana_sample_data_ecommerce/_disk_usage?run_expensive_tasks=true

用途:

  • 第一:支持统计索引自身的磁盘使用。
  • 第二:支持统计每个字段级别的磁盘使用。

2、_disk_usage API 适用场景是啥?

此 API 不支持在以前的 Elasticsearch 版本中创建的索引。

适用于大索引

PS:小索引的结果可能不准确,因为 API 可能无法分析索引的某些细节部分。

本质用途:

  • 技术人员可直观看到索引各个字段占据存储空间的大小。
  • 评估数据建模的合理性。
  • 定量指导Mapping 优化。

3、_disk_usage API对应版本?

7.15+ 之后的版本才可以用哦。

4、_disk_usage API 如何用?

POST kibana_sample_data_ecommerce/_disk_usage?run_expensive_tasks=true

注意一个细节:run_expensive_tasks 意味着这个 API 非常耗费资源,所以大家别频繁验证线上环境。

召回结果如下:

执行结果部分截图

每个字段的磁盘使用率清晰、明白的列举出来了。

7.17 版本 Elasticsearch 集群验证一把:

POST _reindex
{
  "source": {
    "index": "kibana_sample_data_logs",
    "_source": [
      "host",
      "index",
      "ip",
      "tags",
      "response"
    ]
  },
  "dest": {
    "index": "kibana_sample_data_logs_ext"
  }
}
 
POST kibana_sample_data_logs_ext/_disk_usage?run_expensive_tasks=true

官方并没有统计,我把结果数据梳理统计了一下,如下两张图所示:

说明了啥?

所有字段的存储实际是:倒排索引所占据存储空间大小 + doc_values 正排索引存储空间大小 + store_fields 存储空间大小等的总和。

再深问一句,这个和咱们最早设定的 Mapping 就有关系了,和数据建模就有关系了。

看一下 Mapping:

{
  "kibana_sample_data_logs_ext" : {
    "mappings" : {
      "properties" : {
        "host" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "index" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "ip" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "response" : {
          "type" : "long"
        },
        "tags" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}

再进一步看看各个字段所占据的存储空间大小:

能有什么结论?

  • _source 是占据存储空间的。
  • 默认的 Mapping 在 dynamic 默认为 true 的前提下字符串类型会包含两种类型:text 和 keyword,两个是分别占据不同的存储空间的。
  • 数据建模建议:如果只需要全文检索,字符串类型设置 text 就足够了。
  • 数据建模建议:如果不需要全文检索只需要排序和聚合,字符串类型设置 keyword 就足够了。
  • _version 是占据存储空间的,咱们的 update_by_query 和  delete_by_query 本质都是逻辑删除,势必会增加 _version 的空间。
  • 如果未来再有字段选型搞不定存储空间的时候——用这个 API 一下就搞定了。
  • 。。。。。
    还能进一步推出很多有意思的结论。

5、_disk_usage API "牛逼"在什么地方?

之前我们对于磁盘占据空间是一个泛泛的整体概念,现在有了这个 API 我们可以做的很细了。

具体到哪个字段占据了多少磁盘知道了以后,极大便利的指导我们的数据建模。

相当于数据建模有了可量化的、可视化的参考依据。

之前两个同事可能为某个字段的某些属性的设置会争吵,甚至吵得不可开交。

现在不需要了,“走两步”,对比一下磁盘容量,直接就能给出孰优孰劣的结论。

图片来自:优酷

6、小结

个人更期望的功能就是字段存储空间的可视化功能,各个字段占据一目了然呈现出来,类似:search_profile 的功能。估计未来版本会出现。

欢迎大家留言说一下自己的思考。

您或者您的团队发现类似好用但相对小众的“新功能”,也欢迎第一时间联系我。我会尽自己的一点微薄之力,让更多 Elastic 爱好者知道。

感谢魏子珺大佬!

推荐

1、重磅 | 死磕 Elasticsearch 方法论认知清单(2021年国庆更新版)

2Elasticsearch 7.X 进阶实战私训课(口碑不错)

3、如何系统的学习 Elasticsearch ?

4、Elasticsearch 数据建模实战指南

5、干货 | 论Elasticsearch数据建模的重要性

6、从一个实战问题再谈 Elasticsearch 数据建模


更短时间更快习得更多干货!

和全球近 1600+ Elastic 爱好者一起精进!

比同事抢先一步学习进阶干货!


相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
1天前
|
IDE API 开发工具
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
Alibaba Cloud API Toolkit for VSCode 是集成了 OpenAPI 开发者门户多项功能的 VSCode 插件,开发者可以通过这个插件方便地查找API文档、进行API调试、插入SDK代码,并配置基础环境设置。我们的目标是缩短开发者在门户和IDE之间的频繁切换,实现API信息和开发流程的无缝结合,让开发者的工作变得更加高效和紧密。
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
|
1天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 09 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
1月前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
231 12
|
9天前
|
API
使用`System.Net.WebClient`类发送HTTP请求来调用阿里云短信API
使用`System.Net.WebClient`类发送HTTP请求来调用阿里云短信API
13 0
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
2月前
|
弹性计算 API 开发工具
揭秘Python与阿里云API的神秘邂逅!流式处理的魔法之旅,一场颠覆想象的技术盛宴!
【8月更文挑战第15天】在数字世界的广阔舞台上,Python与阿里云API的相遇,就像是一场命中注定的邂逅。它们携手共舞,为我们带来了流式处理的魔法之旅。本文将揭开这场神秘邂逅的面纱,带你领略Python与阿里云API之间的奇妙互动。让我们一起踏上这场颠覆想象的技术盛宴,探索流式处理的无限可能!
78 7
|
2月前
|
运维 Devops API
阿里云云效操作报错合集之调用api报错:没有权限,是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2024 年 07 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
2月前
|
敏捷开发 测试技术 API
阿里云云效产品使用合集之调用API次数过多导致限流,该怎么办
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
运维 API 开发工具
阿里云云效操作报错合集之在编辑器里api接口调用时,经常报错,是什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。