自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书山有路,学海无涯。记录成长,追逐梦想

专注于【大数据】、【云原生】、【云计算】、【测试技术】等领域

  • 博客(547)
  • 收藏
  • 关注

原创 【Elasticsearch】精准匹配检索(Exact Match)

本文介绍了 Elasticsearch 精准匹配检索的功能与应用。文章首先分类介绍了 Term、Terms、Range 等精准查询方式,以及全文检索、复合检索和特殊检索类型。随后通过创建产品索引和测试数据,详细演示了 Term(精确值匹配)、Terms(多值匹配)、Range(范围查询)和 Exists(存在性查询)等精准查询的具体实现。案例包括查找特定类别的产品、多类别筛选、价格区间查询以及字段存在性检查,帮助读者掌握各类精准检索的使用场景和实现方法。

2025-06-23 11:00:00 867

原创 【Elasticsearch】请求量和延迟对搜索性能的影响及关键指标分析

当集群收到请求时,可能需要跨多个节点访问多个分片中的数据。系统处理和返回请求的速率、当前正在进行的请求数以及请求的持续时间等核心指标是衡量集群健康的重要因素。请求过程本身分为两个阶段。第一个是查询阶段,集群将请求分发到索引中的每个分片(主分片或副本成片)。第二个是获取阶段,查询结果被收集,处理并返回给用户。

2025-06-23 10:00:00 604

原创 【Elasticsearch】磁盘警戒水位线机制

磁盘警戒水位线(Disk Watermark)是 Elasticsearch 用于防止节点因磁盘空间不足导致故障的重要保护机制,它会根据磁盘使用情况自动控制分片分配行为。

2025-06-22 09:22:34 1045

原创 【Elasticsearch】_cluster/health 和 _cat/nodes 命令详解

Elasticsearch集群监控命令解析 本文详细解析了Elasticsearch的两个关键监控命令:_cluster/health用于检查集群健康状态,包含分片分配、节点数量等关键指标;_cat/nodes可查看各节点资源使用情况,如CPU、内存负载和节点角色。文章提供了各参数的详细解释、健康状态分析示例和监控建议,帮助运维人员快速识别集群异常。当status变为yellow/red或资源使用率达阈值时需立即介入处理,确保集群稳定运行。

2025-06-22 09:20:35 708

原创 【Elasticsearch】运维监控:分片和节点

与主节点相比,数据节点是文档落地存储的载体,同时数据节点还接收并处理客户端请求,执行搜索和聚合有关的所有数据操作。数据节点往往需要具有较高 CPU 内存资源的服务器。文档增、删、改、查以及搜索操作会占用大量 CPU 和 IO。因此监视数据节点利用率指标很重要,从 CPU、内存的角度来看,应确保数据节点平且不会过载。

2025-06-21 15:48:03 974

原创 【Elasticsearch】脚本(Script)

Elasticsearch 脚本(Script)是一种在查询、聚合或更新文档时执行自定义逻辑的方式。它允许用户在查询时动态计算值、修改文档或实现复杂的业务逻辑,而无需预先处理数据。

2025-06-21 09:28:10 747

原创 【Elasticsearch】文档迁移(Reindex)

Elasticsearch 的 Reindex 操作是一种将数据从一个索引复制到另一个索引的重要功能,主要应用于索引结构变更、数据迁移、数据转换、分片优化和版本升级等场景。该操作本质上是重新索引文档的过程,而非简单文件复制。

2025-06-17 11:00:00 1070

原创 【Elasticsearch】更新文档,_source 字段必须为 true 吗

Elasticsearch 的 _source 字段默认为 true(存储原始文档数据),禁用后将无法进行部分更新或脚本更新(报错 "source disabled"),仅支持完全替换(PUT)。实际测试表明,禁用 _source 后部分更新操作失败,而替换操作成功。生产环境建议保持 _source 启用以确保灵活性,除非存储敏感且无需更新功能。可通过 _mapping 检查设置,禁用后需重建索引恢复功能。关键结论:_source 并非必须为 true,但禁用会严重限制更新能力。

2025-06-17 10:00:00 602

原创 【Elasticsearch】为什么文档删除后,索引存储空间有时反而增大

Elasticsearch删除文档后索引空间可能增大,主要源于底层机制:1) 标记删除机制使文档仅被标记而非物理删除,新增Tombstone记录占用空间;2) 段合并延迟导致新旧段并存;3) Translog和版本控制等元数据累积。解决方案包括手动触发段合并、调整刷新间隔和监控Translog。最佳实践建议批量删除后执行_forcemerge,并关注docs.deleted比例(超过10%需优化)。该现象是系统为平衡性能与一致性的正常表现。

2025-06-16 11:00:00 725

原创 【Elasticsearch】为什么批量写入(bulk)可以提高性能

本文探究了在 Elasticsearch 中为什么批量写入(bulk)可以提高性能的原因。

2025-06-16 10:00:00 609

原创 【Elasticsearch】文档(二):更新

本文介绍了Elasticsearch中更新文档的多种操作方式。首先说明了更新文档的前置条件,包括文档必须存在、索引存在、用户拥有写入权限等。然后通过具体示例演示了6种更新场景。每种方法都配有完整的命令示例和操作截图,涵盖了Elasticsearch常见的文档更新需求。

2025-06-15 12:17:35 823

原创 【Elasticsearch】文档(一):新增 & 删除

在 Elasticsearch 中,文档(Document)是最小的可索引数据单元,也是信息存储和检索的基本单位。它是 Elasticsearch 的核心概念之一,类似于关系型数据库中的一行记录或 NoSQL 数据库中的一个 JSON 对象。

2025-06-15 09:25:38 770

原创 【Elasticsearch】数据预处理(含实战案例)

Elasticsearch的数据预处理是指在文档索引前,通过 Ingest Pipeline 机制对原始数据进行标准化、清洗和增强处理。预处理可实现数据格式化、字段提取、信息丰富、敏感数据清洗和文本优化等功能。核心实现方式是通过一系列处理器(如grok、geoip、script等)组成的处理管道,在文档写入时自动执行转换。

2025-06-14 18:21:11 1590

原创 【Elasticsearch】分词机制详解(含实战案例)

本文详细介绍了Elasticsearch中的分词机制。分词是将文本拆分为独立词项的过程,用于提高搜索效率和准确性。分词主要发生在索引和搜索两个阶段,由字符过滤器、分词器和词项过滤器三部分组成。文章列举了内置分词器、中文分词器和自定义分词器分类,并通过一个跨境电商商品搜索案例,展示了如何设计包含多语言支持、型号处理、同义词扩展等功能的定制分词器。该案例实现特殊符号过滤、产品型号保留等技术要点,有效解决了电商搜索中的多语言、复杂规格等实际问题。

2025-06-14 11:52:12 1723

原创 【Elasticsearch】Elasticsearch 近实时高速查询原理

倒排索引是 Elasticsearch 能实现近实时查询的重要原因之一,那为什么倒排索引可以提高查询的速度呢?底层的工作原理又是什么呢?对比其他的查询搜索组件,Elasticsearch 的优势在哪里?

2025-06-10 23:23:07 969

原创 【Elasticsearch】正排索引、倒排索引(含实战案例)

文章摘要 本文详细介绍了搜索引擎中的两种核心索引结构:正排索引和倒排索引。正排索引通过文档ID映射文档内容,适合获取完整文档和排序计算;倒排索引通过词项映射文档ID列表,支持高效全文搜索。两者协同工作完成搜索流程:倒排索引定位匹配文档,正排索引获取文档内容。文中通过电商商品搜索案例,在Kibana中演示了两种索引的实际应用场景,包括全文搜索、排序、高亮等操作。最后还提供了索引性能优化建议,如禁用非必要字段的正排索引等。理解这两种索引的差异有助于优化搜索引擎的设计和使用。

2025-06-10 11:00:00 861

原创 【Elasticsearch】Elasticsearch 在大数据生态圈的地位 & 实践经验

Elasticsearch 是实时搜索和分析领域的王者,其优势源于倒排索引和分布式架构的深度优化。在大数据生态中,它与 HDFS、Hive 等组件不是替代关系,而是互补协作(例如用 HDFS 存储原始数据,用 ES 提供实时查询)。

2025-06-09 23:56:14 1590

原创 【Elasticsearch】一个图书馆的案例解释 Elasticsearch

在 Elasticsearch 中,索引(Index)既可以是 名词(存储数据的逻辑单元),也可以是 动词(写入数据的过程)。让我们用一个更生活化的比喻来彻底理清这个概念。

2025-06-09 23:25:42 1227 1

原创 【Elasticsearch】映射:null_value 详解

Elasticsearch中null_value参数详解:用于处理字段值为null或不存在的情况,允许指定替代值进行索引和查询。支持数值、字符串、日期等多种字段类型,使用时需注意类型匹配和存储开销。通过示例展示了如何为不同类型字段设置null_value,以及查询时的具体用法。主要应用于统一处理缺失值、聚合分析等场景,与exists查询和应用层处理相比各有优劣。该功能是处理null值搜索和聚合的直接解决方案,但会略微增加索引大小。

2025-06-08 23:42:34 1335

原创 【Elasticsearch】映射:详解 _source & store 字段

本文详细介绍了Elasticsearch中_source和store字段的区别与用法。_source字段默认启用,存储文档的原始JSON内容,支持完整文档检索、高亮和重新索引等操作。而store是字段级属性,单独存储特定字段,适合只需访问部分字段的场景。两者主要区别在于:_source是文档级存储,开销较大;store是字段级存储,更高效但功能有限。建议在大多数情况下保持_source启用,仅对需要频繁访问的特定字段设置store属性。合理使用这两个特性可以平衡存储开销和查询性能。

2025-06-08 19:16:21 1224

原创 【Elasticsearch】映射:fielddata 详解

fielddata 是 Elasticsearch 中一种数据结构,用于在内存中缓存字段数据。当需要对 text 字段或其他非 doc_values 支持的字段执行上述操作时,Elasticsearch 需要将这些字段的值加载到内存中,这就是 fielddata 的作用。

2025-06-08 14:18:18 1143

原创 【Kibana】Kibana 大数据分析实战(电商数据集)

kibana_sample_data_ecommerce 是 Elastic 官方提供的电商业务模拟数据集,主要用于 Kibana 的功能演示和数据可视化练习。这个数据集模拟了一个在线零售商的交易数据。

2025-06-07 17:15:38 1135 1

原创 【Elasticsearch】映射:Join 类型、Flattened 类型、多表关联设计

在 Elasticsearch 中,由于它是面向文档的 NoSQL 数据库,不像关系型数据库那样原生支持 JOIN 操作,因此需要采用特殊的设计方案来实现多表关联。

2025-06-07 11:51:02 842

原创 【Elasticsearch】映射:Nested 类型

Nested(嵌套)类型是 Elasticsearch 中一种特殊的数据类型,用于处理对象数组(object arrays)中对象的独立性。在默认情况下,Elasticsearch 会将对象数组扁平化(flattened),这会导致数组内对象之间的关联丢失。Nested 类型解决了这个问题,它使数组中的每个对象被独立索引和查询。

2025-06-06 23:54:28 1833 1

原创 【Elasticsearch】映射(Mapping)

动态映射是 Elasticsearch 自动检测和创建字段映射的能力。当索引一个新文档时,如果包含未定义的字段,Elasticsearch 会根据字段值自动推断数据类型并创建映射。

2025-06-05 22:13:07 1133 1

原创 【Elasticsearch】ILM(Index Lifecycle Management)策略详解

ILM(Index Lifecycle Management,索引生命周期管理)是 Elasticsearch 提供的一种自动化管理索引生命周期的机制。它允许用户根据预先定义的策略,自动执行索引的滚动更新(rollover)、分片分配、冻结和删除等操作,无需人工干预。

2025-06-02 20:07:08 1279

原创 【Elasticsearch】索引(Index)

索引模板(Index Template)是 Elasticsearch 中一种自动为新创建的索引应用预定义配置(包括设置、映射和别名)的机制。当新索引的名称与模板中定义的模式匹配时,Elasticsearch 会自动将模板中的配置应用到该索引。

2025-06-02 14:31:10 977

原创 【Python Cookbook】文件与 IO(三)

需要强调的一点是,内存映射一个文件并不会导致整个文件被读取到内存中。也就是说,文件并没有被复制到内存缓存或数组中。相反,操作系统仅仅为文件内容保留了一段虚拟内存。当你访问文件的不同区域时,这些区域的内容才根据需要被读取并映射到内存区域中。而那些从没被访问到的部分还是留在磁盘上。所有这些过程是透明的,在幕后完成!

2025-06-01 14:02:39 999

原创 【Python Cookbook】文件与 IO(二)

当你想模拟一个普通文件的时候,StringIO 和 BytesIO 类是很有用的。比如,在单元测试中,你可以使用 StringIO 来创建一个包含测试数据的类文件对象,这个对象可以被传给某个参数为普通文件对象的函数。需要注意的是, StringIO 和 BytesIO 实例并没有正确的整数类型的文件描述符。因此,它们不能在那些需要使用真实的系统级文件,如文件,管道或者是套接字的程序中使用。

2025-06-01 13:59:56 968

原创 【Python】解析 io.StringIO 与 io.BytesIO

io.StringIO 和 io.BytesIO 是 Python 中用于内存中模拟文件操作的两个类,分别用于处理文本数据和二进制数据。它们的主要优势是避免实际文件 I/O 操作,从而提高效率并简化代码。

2025-05-31 21:48:55 609

原创 【Python Cookbook】文件与 IO(一)

当读取一个未知编码的文本时使用 latin-1 编码永远不会产生解码错误。使用 latin-1 编码读取一个文件的时候也许不能产生完全正确的文本解码数据,但是它也能从中提取出足够多的有用数据。同时,如果你之后将数据回写回去,原先的数据还是会保留的。

2025-05-31 18:14:05 834

原创 【OpenSearch】高性能 OpenSearch 数据导入

以下是一个高性能的 Python 脚本,用于向 OpenSearch 实例批量导入约 10GB 的数据。这个脚本使用了最佳实践来优化写入性能。

2025-05-30 23:25:14 1271

原创 【Python】yield from 功能解析

yield from 是 Python 中的一个语法(PEP 380),用于简化生成器(generator)中委托子生成器的操作。它的核心作用是让一个生成器能够将部分或全部生成逻辑 “委托” 给另一个生成器,从而避免手动编写循环来逐个生成子生成器的值。

2025-05-30 11:11:21 680

原创 【Python Cookbook】迭代器与生成器(四)

这种特殊的方法对于一些特定的会被重复调用的函数很有效果,比如涉及到 I/O 调用的函数。举例来讲,如果你想从套接字或文件中以数据块的方式读取数据,通常你得要不断重复的执行 read() 或 recv() ,并在后面紧跟一个文件结尾测试来决定是否终止。这节中的方案使用一个简单的 iter() 调用就可以将两者结合起来了。其中 lambda 函数参数是为了创建一个无参的 callable 对象,并为 recv 或 read() 方法提供了 size 参数。

2025-05-29 23:30:55 987

原创 【Python Cookbook】迭代器与生成器(三)

本文介绍了Python中处理迭代和集合操作的几种实用方法。首先讲解了使用itertools模块中的permutations()、combinations()和combinations_with_replacement()函数来生成排列组合。然后介绍了enumerate()函数在迭代时跟踪索引的用法,包括自定义起始索引值。接着说明了zip()函数如何同时迭代多个序列,以及使用zip_longest()处理不等长序列的情况。这些技巧可以简化代码,提高处理集合数据的效率,特别在需要组合、索引或并行迭代时非常实用。

2025-05-26 23:28:24 921

原创 【Python Cookbook】迭代器与生成器(二)

当你需要编写一个生成器函数,但这个生成器还需要提供一些额外的状态(比如历史记录、计数器等)给外部使用时,单纯用生成器函数可能不够方便(因为生成器函数的主要目的是 yield 值,而不是管理状态)。这时候,你可以改用类来实现,将生成器逻辑放在 __iter__() 方法中,并通过类的属性暴露外部状态。

2025-05-25 22:01:39 772

原创 【DevOps】Git 命令实战:一个简单的 Web 开发项目示例

让我们通过一个具体的 Web 开发项目来讲解 Git 的常用命令。假设我们要开发一个简单的个人博客网站。

2025-04-26 00:54:43 599 1

原创 【Python】迭代器(Iterator)vs 生成器(Generator)

迭代器是一个可以逐个访问元素的对象,比如 list、dict、set 都可以通过 iter() 转换成迭代器。

2025-04-18 00:12:46 738 1

原创 【Python Cookbook】迭代器与生成器(一)

DepthFirstIterator 类和上面使用生成器的版本工作原理类似,但是它写起来很繁琐,因为迭代器必须在迭代处理过程中维护大量的状态信息。坦白来讲,没人愿意写这么晦涩的代码。将你的迭代器定义为一个生成器后一切迎刃而解。

2025-04-17 23:56:16 904

原创 【AutoTest】自动化测试工具大全(Python)

一个精心整理的 Python 测试自动化框架、工具、库和软件的综合列表,帮助软件工程师在 Python 上轻松地启动测试自动化工作。

2025-04-12 17:47:15 1231

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除