Elastic
文章平均质量分 96
Elastic Stack 核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash 等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。
大数据与AI实验室
计算机科学与技术本科,计算机技术硕士,现任职于某互联网公司,担任大数据研发工程师。优快云云原生领域优质创作者、博客专家。专注于大数据、云计算、人工智能等融合方向研究,致力于帮助企业解决实际痛点问题、赋能生产,接受相关解决方案咨询。书籍《高质量上云》正在积极撰写中,敬请期待。微信公众号同名:大数据与AI实验室。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Elasticsearch】查询性能调优(七):为什么计数对性能影响如此之大?
计数操作在分布式系统(如 Elasticsearch)中性能开销远高于理论上的 O(N) 复杂度,主要原因包括:(1)存储层级开销:需扫描多个 Lucene 段文件,涉及磁盘 I/O 和内存访问;(2)分布式协调成本:需合并多个分片结果,网络通信和内存合并可能触发断路器;(3)查询复杂度:涉及评分计算、聚合等额外处理。建议非必要场景禁用精确计数(track_total_hits=false),或限制计数范围。原创 2025-12-31 23:07:53 · 1170 阅读 · 0 评论 -
【Elasticsearch】查询性能调优(六):track_total_hits 影响返回结果的相关性排序吗
track_total_hits 参数仅影响 Elasticsearch 查询结果的总数统计精度,完全不影响文档的相关性排序。查询过程分为两个独立阶段:文档收集与排序(由 sort 和 query 参数控制)和总数统计(由 track_total_hits 控制)。实验证明,即使调整 track_total_hits 的值,返回的文档顺序始终一致。真正影响排序的因素包括:排序字段定义、查询类型、评分函数及搜索类型。在业务场景中,应明确区分计数参数与相关性参数,避免混淆。原创 2025-12-30 23:13:59 · 1349 阅读 · 0 评论 -
【Elasticsearch】查询性能调优(五):如何确保 “最相关” 的结果
Elasticsearch 默认能保证单次查询返回的前 N 条结果是最相关的,但需满足特定条件。关键影响因素包括排序方式(默认按 _score 降序)和分片机制(各分片先返回本地 Top N 再合并)。破坏相关性的常见场景包括:使用 terminate_after 提前终止查询、多字段排序导致权重失衡,以及分片间数据分布不均。解决方案包括:1)使用 dfs_query_then_fetch 模式获取全局统计信息;2)优化分片策略(如单分片);3)通过 function_score 自定义评分脚本。原创 2025-12-28 21:17:48 · 1163 阅读 · 0 评论 -
【Elasticsearch】查询性能调优(四):计数的精确性探讨
本文探讨了计数在用户体验、业务决策和查询优化中的重要性,同时分析了精确计数的高昂代价。文章指出,Elasticsearch 采用"足够好"的工程理念,通过提供不同精度的计数选项(近似计数、上限精确计数和完全精确计数)来平衡性能与准确性。这种分层设计允许用户根据具体场景选择适合的精度级别,既满足了基本需求又避免了不必要的性能损耗。原创 2025-12-28 11:31:31 · 971 阅读 · 0 评论 -
【Elasticsearch】查询性能调优(三):track_total_hits 和 terminate_after 可能的冲突
track_total_hits 和 terminate_after 在 Elasticsearch 中结合使用时可能产生冲突。terminate_after 会优先触发,在达到指定匹配数后立即终止查询,导致 track_total_hits 无法完成精确计数。原创 2025-12-28 09:27:13 · 799 阅读 · 0 评论 -
【Elasticsearch】查询性能调优(二):SQL LIMIT 和 terminate_after 对比
本文详细分析了 Elasticsearch 中三种关键查询参数的区别与联系。terminate_after:真正的 LIMIT 机制,达到指定数量立即停止扫描,显著提升查询速度但可能返回不足量结果。track_total_hits:仅限制精确计数值,不影响结果返回,适合大数据集近似统计。size:传统分页参数,需要完整扫描和排序,内存消耗大。通过工作流程代码示例、实际行为对比和 SQL 类比,文章揭示了各参数的本质差异,并提供了场景测试数据和应用建议。原创 2025-12-27 20:51:16 · 1082 阅读 · 0 评论 -
【Elasticsearch】查询性能调优(一):性能保护参数详解
本文介绍了 Elasticsearch 查询性能调优的关键参数和方法。主要包括三个核心保护参数:timeout 设置查询超时时间,terminate_after 限制最大返回文档数,track_total_hits 控制命中数计算。同时分析了 composite 聚合的分页机制及其内存优势。通过流程图展示了完整查询流程,并比较了有无保护参数的实际执行差异。最后提出了分层查询策略等优化建议,帮助开发者平衡查询深度与系统负载。这些措施能有效防止复杂查询耗尽资源,保障集群稳定性。原创 2025-12-27 16:33:38 · 1135 阅读 · 0 评论 -
【Elasticsearch】大慢查询隔离(二):选择插件
本文分类介绍了 Elasticsearch 中用于查询隔离、限流和保护的主要插件。首先介绍了官方和主流插件如 Search Guard 和 ReadonlyREST,它们提供基于角色的查询限制、速率控制等功能。其次介绍了专用查询管理插件 Query Guard 和 Search Profiler,专注于查询保护和诊断。文章还展示了自定义开发插件的示例代码,以及监控告警插件如 HQ 和 Prometheus 的配置方法。这些插件共同构成了 Elasticsearch 查询隔离和保护的技术方案。原创 2025-12-13 22:48:41 · 983 阅读 · 0 评论 -
【Elasticsearch】 大慢查询隔离(一):最佳实践
Elasticsearch 的大慢查询隔离机制通过资源限制和队列隔离防止耗时查询影响集群性能。核心配置包括线程池隔离、查询级限制(如超时设置、文档数限制)和索引级参数控制。最佳实践建议采用分层架构、读写分离和冷热数据分离策略,同时结合慢查询日志监控和用户权限控制。该机制需在性能保护与业务需求间取得平衡,通过动态调整和查询优化保障集群稳定性,避免单个慢查询导致系统雪崩。原创 2025-12-13 17:10:57 · 519 阅读 · 0 评论 -
【Elasticsearch】索引状态管理(ISM)实战(万字长文)
本文详细介绍了 OpenDistro 的 ISM(Index State Management)功能,并与 Elasticsearch 的 ILM 进行了对比。ISM 是 AWS OpenDistro 开源方案,采用 Apache 2.0 许可证,而 ILM 是 Elastic 官方商业功能。ISM 为开源用户提供了完善的索引生命周期管理方案,适合需要免费自动化索引管理的场景。原创 2025-11-30 20:47:43 · 1789 阅读 · 0 评论 -
【Elasticsearch】索引别名 aliases
本文探讨了 Elasticsearch 索引别名与写入索引的关系。主要内容包括:(1)错误演示:当多个索引同时设置为同一别名的写入索引时会报错;(2)三种解决方案:先移除旧索引写入权限再设置新索引、使用原子操作一次性切换、创建时不设置写入索引后续再切换;(3)验证方法:查看别名指向的索引和当前写入索引;(4)实际应用场景:基于时间的索引滚动和索引重建。文章强调一个别名可指向多个索引,但只能有一个写入索引,这种机制是实现索引滚动等高级功能的基础。原创 2025-11-30 11:47:49 · 1495 阅读 · 0 评论 -
【Elasticsearch】索引字段设置 “index”: false 的作用
本文解释了 Elasticsearch 中 "index": false 的作用,澄清了该设置仅禁止字段被搜索和聚合,但仍允许在结果中返回。通过图书馆的比喻,说明不可搜索字段如同没有索引卡片的书籍,虽无法通过关键词查找,但可直接获取。文章演示了如何通过 _source 控制字段返回,并列举了密码字段、原始请求数据等典型应用场景。最后对比了不同操作对 index 和 _source 的依赖关系,帮助用户正确理解和使用这一配置。原创 2025-11-29 23:46:34 · 836 阅读 · 1 评论 -
【Elasticsearch】动手创建一个索引
本文介绍了 Elasticsearch 索引创建与配置的完整流程。主要内容包括:1)创建名为 test-index 的索引,配置3个主分片和1个副本,设置15秒刷新频率,并定义 log-index 别名作为写入索引;2)索引包含多种字段类型(日期、关键词、文本、数值、布尔值等),特别针对中文文本配置了IK分词器;3)详细说明了默认摄入管道的功能,它可以在数据索引前进行预处理和转换;4)解释了字段数据统计机制(fielddata 和 doc_values)的作用,使文本字段支持排序和聚合操作。原创 2025-11-28 22:38:51 · 1245 阅读 · 0 评论 -
【Elasticsearch】Elasticsearch 的核心概念
Elasticsearch 是一个基于 Apache Lucene 的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。原创 2024-04-20 12:57:38 · 1586 阅读 · 1 评论 -
【Elasticsearch】Elasticsearch 的基本语法
Elasticsearch 是一个基于 Apache Lucene 的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。原创 2024-04-20 17:00:41 · 1773 阅读 · 1 评论 -
【Elasticsearch】开源搜索技术的演进与选择:Elasticsearch 与 OpenSearch
OpenSearch 已发布 3 年多,Elasticsearch 和 OpenSearch 已存在很多不同,但它们最终都源自同一个版本:Elasticsearch 7.10.2。我们不对 Elasticsearch 和 Amazon OpenSearch 之间的选型提供直接的推荐,因为最合适的选择将取决于项目或产品独特的需求和环境。但,文中数据相信会给你提供参考。建议读者根据自己的具体情况和偏好做出决定,并考虑功能需求、成本效益、长期的技术支持或自身是否具备架构及性能调优等能力。原创 2024-07-08 23:34:03 · 1810 阅读 · 0 评论 -
【Elasticsearch】Elasticsearch 中的节点角色
主节点在 Elasticsearch 集群中的关键作用主要体现在全局级别的管理上。例如,主节点负责管理索引的创建或删除操作,监控哪些节点是集群的成员,以及确定将哪些分片分配给哪些节点。这种决策和管理的能力使主节点在维持整个集群稳定运行中扮演了重要角色。原创 2024-07-20 14:55:09 · 2739 阅读 · 0 评论 -
【ELasticsearch】节点角色分类与作用解析
ELasticsearch 集群通过角色隔离实现性能与稳定性的平衡 —— 热层追求速度,协调层消化流量,主节点专注决策,温冷层优化成本。各角色各司其职,构建高可用分布式系统。原创 2025-07-26 18:40:16 · 1949 阅读 · 0 评论 -
【ELasticsearch】节点角色分离最佳实践
本文介绍了一个分层 Elasticsearch 生产集群设计方案,包含热、温、冷、冷冻四层存储架构。热层采用高性能 NVMe SSD 处理实时写入和高频查询;温层使用 SAS SSD 存储近期访问数据;冷层配置大容量 HDD 存储历史数据;冷冻层则结合对象存储实现长期归档。文章详细说明了各层的硬件配置、节点角色设置和分片策略,并提供了数据流动逻辑示意图和 ILM 策略示例。该架构通过严格分层实现了性能隔离和成本优化,SSD 使用量减少 70% 以上,存储成本可降低 5 倍,同时保持灵活的扩展性和合规性。原创 2025-07-27 11:18:02 · 1328 阅读 · 0 评论 -
【ELasticsearch】温、冷数据节点能是同一个节点吗
在 Elasticsearch 中,虽然技术上可以让一个节点同时承担“温”和“冷”数据层的角色,但这通常不是最佳实践。温层节点需要较好的 CPU、内存和高速磁盘以支持查询,而冷层节点侧重低成本、高密度存储。混合部署会导致硬件需求冲突、资源干扰风险,增加管理复杂度,并削弱分层存储的优化效果。建议在生产环境中使用独立的物理节点分别作为温节点和冷节点,以实现性能隔离和成本效益。仅在小规模测试或开发环境中可考虑临时混合配置。原创 2025-07-27 13:48:31 · 1609 阅读 · 0 评论 -
【OpenSearch】高性能 OpenSearch 数据导入
以下是一个高性能的 Python 脚本,用于向 OpenSearch 实例批量导入约 10GB 的数据。这个脚本使用了最佳实践来优化写入性能。原创 2025-05-30 23:25:14 · 1530 阅读 · 0 评论 -
【Elasticsearch】索引(Index)
索引模板(Index Template)是 Elasticsearch 中一种自动为新创建的索引应用预定义配置(包括设置、映射和别名)的机制。当新索引的名称与模板中定义的模式匹配时,Elasticsearch 会自动将模板中的配置应用到该索引。原创 2025-06-02 14:31:10 · 1691 阅读 · 0 评论 -
【Elasticsearch】ILM(Index Lifecycle Management)策略详解
ILM(Index Lifecycle Management,索引生命周期管理)是 Elasticsearch 提供的一种自动化管理索引生命周期的机制。它允许用户根据预先定义的策略,自动执行索引的滚动更新(rollover)、分片分配、冻结和删除等操作,无需人工干预。原创 2025-06-02 20:07:08 · 1844 阅读 · 0 评论 -
【Elasticsearch】映射(Mapping)
动态映射是 Elasticsearch 自动检测和创建字段映射的能力。当索引一个新文档时,如果包含未定义的字段,Elasticsearch 会根据字段值自动推断数据类型并创建映射。原创 2025-06-05 22:13:07 · 1503 阅读 · 0 评论 -
【Elasticsearch】映射:Nested 类型
Nested(嵌套)类型是 Elasticsearch 中一种特殊的数据类型,用于处理对象数组(object arrays)中对象的独立性。在默认情况下,Elasticsearch 会将对象数组扁平化(flattened),这会导致数组内对象之间的关联丢失。Nested 类型解决了这个问题,它使数组中的每个对象被独立索引和查询。原创 2025-06-06 23:54:28 · 2229 阅读 · 1 评论 -
【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计
在 Elasticsearch 中,由于它是面向文档的 NoSQL 数据库,不像关系型数据库那样原生支持 JOIN 操作,因此需要采用特殊的设计方案来实现多表关联。原创 2025-06-07 11:51:02 · 1261 阅读 · 0 评论 -
【Kibana】Kibana 大数据分析实战(电商数据集)
kibana_sample_data_ecommerce 是 Elastic 官方提供的电商业务模拟数据集,主要用于 Kibana 的功能演示和数据可视化练习。这个数据集模拟了一个在线零售商的交易数据。原创 2025-06-07 17:15:38 · 1332 阅读 · 0 评论 -
【Elasticsearch】映射:fielddata 详解
fielddata 是 Elasticsearch 中一种数据结构,用于在内存中缓存字段数据。当需要对 text 字段或其他非 doc_values 支持的字段执行上述操作时,Elasticsearch 需要将这些字段的值加载到内存中,这就是 fielddata 的作用。原创 2025-06-08 14:18:18 · 1406 阅读 · 0 评论 -
【Elasticsearch】映射:详解 _source & store 字段
本文详细介绍了Elasticsearch中_source和store字段的区别与用法。_source字段默认启用,存储文档的原始JSON内容,支持完整文档检索、高亮和重新索引等操作。而store是字段级属性,单独存储特定字段,适合只需访问部分字段的场景。两者主要区别在于:_source是文档级存储,开销较大;store是字段级存储,更高效但功能有限。建议在大多数情况下保持_source启用,仅对需要频繁访问的特定字段设置store属性。合理使用这两个特性可以平衡存储开销和查询性能。原创 2025-06-08 19:16:21 · 1525 阅读 · 0 评论 -
【Elasticsearch】映射:null_value 详解
Elasticsearch中null_value参数详解:用于处理字段值为null或不存在的情况,允许指定替代值进行索引和查询。支持数值、字符串、日期等多种字段类型,使用时需注意类型匹配和存储开销。通过示例展示了如何为不同类型字段设置null_value,以及查询时的具体用法。主要应用于统一处理缺失值、聚合分析等场景,与exists查询和应用层处理相比各有优劣。该功能是处理null值搜索和聚合的直接解决方案,但会略微增加索引大小。原创 2025-06-08 23:42:34 · 1665 阅读 · 0 评论 -
【Elasticsearch】一个图书馆的案例解释 Elasticsearch
在 Elasticsearch 中,索引(Index)既可以是 名词(存储数据的逻辑单元),也可以是 动词(写入数据的过程)。让我们用一个更生活化的比喻来彻底理清这个概念。原创 2025-06-09 23:25:42 · 1412 阅读 · 0 评论 -
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 & 实践经验
Elasticsearch 是实时搜索和分析领域的王者,其优势源于倒排索引和分布式架构的深度优化。在大数据生态中,它与 HDFS、Hive 等组件不是替代关系,而是互补协作(例如用 HDFS 存储原始数据,用 ES 提供实时查询)。原创 2025-06-09 23:56:14 · 1978 阅读 · 0 评论 -
【Elasticsearch】正排索引、倒排索引(含实战案例)
文章摘要 本文详细介绍了搜索引擎中的两种核心索引结构:正排索引和倒排索引。正排索引通过文档ID映射文档内容,适合获取完整文档和排序计算;倒排索引通过词项映射文档ID列表,支持高效全文搜索。两者协同工作完成搜索流程:倒排索引定位匹配文档,正排索引获取文档内容。文中通过电商商品搜索案例,在Kibana中演示了两种索引的实际应用场景,包括全文搜索、排序、高亮等操作。最后还提供了索引性能优化建议,如禁用非必要字段的正排索引等。理解这两种索引的差异有助于优化搜索引擎的设计和使用。原创 2025-06-10 11:00:00 · 1187 阅读 · 0 评论 -
【Elasticsearch】Elasticsearch 近实时高速查询原理
倒排索引是 Elasticsearch 能实现近实时查询的重要原因之一,那为什么倒排索引可以提高查询的速度呢?底层的工作原理又是什么呢?对比其他的查询搜索组件,Elasticsearch 的优势在哪里?原创 2025-06-10 23:23:07 · 1286 阅读 · 0 评论 -
【Elasticsearch】分词机制详解(含实战案例)
本文详细介绍了Elasticsearch中的分词机制。分词是将文本拆分为独立词项的过程,用于提高搜索效率和准确性。分词主要发生在索引和搜索两个阶段,由字符过滤器、分词器和词项过滤器三部分组成。文章列举了内置分词器、中文分词器和自定义分词器分类,并通过一个跨境电商商品搜索案例,展示了如何设计包含多语言支持、型号处理、同义词扩展等功能的定制分词器。该案例实现特殊符号过滤、产品型号保留等技术要点,有效解决了电商搜索中的多语言、复杂规格等实际问题。原创 2025-06-14 11:52:12 · 2216 阅读 · 0 评论 -
【Elasticsearch】数据预处理(含实战案例)
Elasticsearch的数据预处理是指在文档索引前,通过 Ingest Pipeline 机制对原始数据进行标准化、清洗和增强处理。预处理可实现数据格式化、字段提取、信息丰富、敏感数据清洗和文本优化等功能。核心实现方式是通过一系列处理器(如grok、geoip、script等)组成的处理管道,在文档写入时自动执行转换。原创 2025-06-14 18:21:11 · 1789 阅读 · 0 评论 -
【Elasticsearch】文档(一):新增 & 删除
在 Elasticsearch 中,文档(Document)是最小的可索引数据单元,也是信息存储和检索的基本单位。它是 Elasticsearch 的核心概念之一,类似于关系型数据库中的一行记录或 NoSQL 数据库中的一个 JSON 对象。原创 2025-06-15 09:25:38 · 1177 阅读 · 0 评论 -
【Elasticsearch】文档(二):更新
本文介绍了Elasticsearch中更新文档的多种操作方式。首先说明了更新文档的前置条件,包括文档必须存在、索引存在、用户拥有写入权限等。然后通过具体示例演示了6种更新场景。每种方法都配有完整的命令示例和操作截图,涵盖了Elasticsearch常见的文档更新需求。原创 2025-06-15 12:17:35 · 1299 阅读 · 0 评论 -
【Elasticsearch】为什么批量写入(bulk)可以提高性能
本文探究了在 Elasticsearch 中为什么批量写入(bulk)可以提高性能的原因。原创 2025-06-16 10:00:00 · 934 阅读 · 0 评论 -
【Elasticsearch】为什么文档删除后,索引存储空间有时反而增大
Elasticsearch删除文档后索引空间可能增大,主要源于底层机制:1) 标记删除机制使文档仅被标记而非物理删除,新增Tombstone记录占用空间;2) 段合并延迟导致新旧段并存;3) Translog和版本控制等元数据累积。解决方案包括手动触发段合并、调整刷新间隔和监控Translog。最佳实践建议批量删除后执行_forcemerge,并关注docs.deleted比例(超过10%需优化)。该现象是系统为平衡性能与一致性的正常表现。原创 2025-06-16 11:00:00 · 1026 阅读 · 0 评论
分享