搜索引擎全文检索可观测性数据分析【免费下载链接】OpenSearch Open source distributed and RESTful search engine.项目地址https://gitcode.com/gh_mirrors/op/OpenSearch点击查看免费下载2024 年 2 月 9 日发布的 OpenSearch 2.12.0是 2.x 系列中承上启下的一个重要版本。本版本围绕搜索性能并发分段搜索 GA、match_only_text 字段、多项查询性能优化、远程存储与远程集群状态global metadata 上传/下载/恢复、仓库统计、可观测性Query Insights 框架、每请求阶段延迟、集群状态统计、指标框架 Histogram 支持以及Ingest 处理器与搜索管道能力community_id、copy、remove_by_pattern 处理器请求级状态共享与异步处理器四大主线展开。读完本文你将完整掌握 2.12.0 的全部新增能力、行为变更与关键修复并能结合仓库源码理解各特性的底层实现位置与配置入口。版本概览与定位2.12.0 处于 2.x 大版本中期其变更集中在不破坏现有 API 的前提下增强扩展性、可观测性与远程存储能力搜索路径并发分段搜索移除特性开关正式 GA同时新增并发场景下的查询剖析ConcurrentQueryProfiler与基于 slice 的动态分片计算设置存储路径远程集群状态Remote Cluster State首次支持将 global metadata 上传至远程存储、本地状态丢失后从远程存储自动恢复并开放索引级、集群级的动态超时与段元数据文件数量配置管道与处理搜索管道引入请求级共享状态与异步处理器Ingest 侧新增三个开箱即用的处理器运维与安全新增请求级协调器慢日志、远程存储背压拒绝统计、扩展的 service account token 传递、以及针对索引复制类型的集群级限制设置。新增特性Added并发分段搜索正式 GA并配套剖析与分片控制能力2.12.0 移除了并发分段搜索Concurrent Segment Search的特性开关PR #12074该能力正式面向生产环境开放。与其配套本版本还引入了两个关键增强ConcurrentQueryProfilerPR #10352让查询剖析Query Profiler能够走并发分段搜索路径并在重写rewrite与创建 weight 阶段支持并发。仓库中对应的实现位于 server/src/main/java/org/opensearch/search/query/ConcurrentQueryPhaseSearcher.java动态分片计算设置PR #9107新增动态集群设置用于控制并发分段搜索的 slice 计算方式相关逻辑可在 server/src/main/java/org/opensearch/cluster/routing/OperationRouting.java 中看到路由层对请求的分片处理。同时本版本还修复了CachingWeightWrapper#count未委托给内部 weight 对象的问题PR #10543保证并发查询路径下的缓存权重计数正确。从源码结构看IndicesRequestCacheserver/src/main/java/org/opensearch/indices/IndicesRequestCache.java与序列化辅助类IRCKeyWriteableSerializerserver/src/main/java/org/opensearch/indices/IRCKeyWriteableSerializer.java为本版本请求缓存分层Tiered caching见下文提供了基础。搜索管道请求级共享状态与异步处理器搜索管道Search Pipelines在本版本迎来两个重要能力PR #9405、PR #10598请求级状态共享新增 request-scoped state在同一个搜索请求的不同处理器之间共享状态并随之带来三个新处理器可结合 modules/search-pipeline-common/src/main/java/org/opensearch/search/pipeline/common/ 目录下的处理器实现查看例如FilterQueryRequestProcessor、ScriptRequestProcessor、RenameFieldResponseProcessor等异步处理器支持request 与 response 处理器现在可以异步执行避免在 transport 线程上阻塞降低高负载下对线程池的占用。管道注册与状态管理由 server/src/main/java/org/opensearch/search/pipeline/SearchPipelineService.java 承担处理器基类定义见 server/src/main/java/org/opensearch/search/pipeline/SearchRequestProcessor.java。新增 Ingest 处理器community_id、copy、remove_by_pattern2.12.0 为 Ingest 管道新增了三个处理器community_idPR #12121为网络流五元组源/目的 IP 与端口、协议号生成 Community ID 流哈希常用于安全分析场景将相关网络事件关联起来。其实现位于 modules/ingest-common/src/main/java/org/opensearch/ingest/common/CommunityIdProcessor.java。从源码结构看该处理器遵循 Community ID Flow Hashing 算法 v1支持配置源/目的 IP、端口、IANA 协议号、ICMP type/code、seed范围 065535以及 target_field 与 ignore_missing 等参数协议字段缺失时可用iana_number数字字段兜底copyPR #11870将已有字段的值复制到新字段实现位于 modules/ingest-common/src/main/java/org/opensearch/ingest/common/CopyProcessor.javaremove_by_patternPR #11920按正则或通配模式批量移除字段实现位于 modules/ingest-common/src/main/java/org/opensearch/ingest/common/RemoveByPatternProcessor.java。它与既有的 remove 处理器支持排除字段列表PR #10967/#11983形成互补后者行为也在本版本收严禁止删除部分受保护的元数据字段PR #10895/#11607。此外KV ingest 处理器field与target_field新增模板片段template snippets支持PR #10040并允许管道处理器通过 ingest service 引用访问索引 mapping 信息PR #10307实现位于 modules/ingest-common/src/main/java/org/opensearch/ingest/common/KVProcessor.java。远程存储与远程集群状态远程存储Remote Store与远程集群状态Remote Cluster State是 2.12.0 投入最大的领域之一具体包括global metadata 上传与下载将集群状态中的 global metadata 上传至远程存储PR #10404并提供从远程存储下载的功能PR #10535丢失后自动恢复当本地状态因 quorum 丢失而丢失时可从远程存储恢复 global metadataPR #10404同时恢复集群状态版本号以保证一致性PR #10853。相关逻辑可在 server/src/main/java/org/opensearch/cluster/coordination/Coordinator.java 与 server/src/main/java/org/opensearch/cluster/coordination/PublicationTransportHandler.java 等协调层源码中找到对应实现路径动态超时设置索引与 global metadata 的上传超时改为动态集群设置PR #10814文件命名调整远程集群状态文件命名规则调整PR #10557仓库统计与背压统计新增远程存储的仓库统计PR #10567并在地节点_nodes/stats中暴露远程存储背压拒绝统计PR #10524。仓库侧的统计聚合可参考 server/src/main/java/org/opensearch/repositories/RepositoriesStats.java 与 server/src/main/java/org/opensearch/repositories/Repository.java可配置的段元数据文件数量远程分段存储中的段元数据文件数量可配置PR #11329。查询洞察框架Query Insights与 Top N 查询本版本引入 Query Insights 框架PR #11903首个能力是Top N 查询PR #11904在可配置的时间窗口内收集并汇总延迟最高的查询便于定位慢查询。该框架后续版本的演进如字段级洞察即以此为基础。结合 server/src/main/java/org/opensearch/telemetry/ 目录下的遥测基础设施可理解其度量采集与导出的整体设计。新增 match_only_text 字段类型新增match_only_text字段类型PR #11039针对存储进行优化以牺牲 positional位置查询性能换取更低存储占用适用于不需要短语查询等位置敏感能力的全文检索场景。其映射实现位于 server/src/main/java/org/opensearch/index/mapper/MatchOnlyTextFieldMapper.java。准入控制Admission Control与资源监控新增资源使用收集服务与资源使用追踪器PR #9890为后续基于资源水位进行请求准入提供数据基础增强文件系统统计新增读写时间、队列大小与 IO 时间PR #10541帮助更准确地评估磁盘压力。集群与节点可观测性集群状态统计新增_cluster/stats维度的集群状态统计能力PR #10670实现见 server/src/main/java/org/opensearch/cluster/service/ClusterStateStats.java 与 server/src/main/java/org/opensearch/cluster/coordination/PendingClusterStateStats.java每请求阶段延迟PR #10351对请求的各个处理阶段分别计时并修复了最后一个阶段未被追踪的问题PR #10934请求级协调器慢日志PR #10650在协调节点层面记录慢请求指标框架支持 HistogramPR #12062Metrics Framework 新增直方图指标类型OTel 侧对应实现可见 plugins/telemetry-otel/src/main/java/org/opensearch/telemetry/metrics/OTelHistogram.java。搜索与索引的其他新增搜索查询分类器PR #10255搜索模板为渲染搜索模板单独创建 transport actionPR #11170并在simulatetrue时增加额外处理PR #11591update aliases API 支持must_exist参数PR #11210可约束被更新的别名必须已存在half_float BKD 排序查询优化回归PR #11024以及基于 bloom filter 的 Fuzzy codec 用于 doc id 字段PR #11022searchable snapshot 索引支持副本数变更PR #11317与索引级分配过滤PR #11563Tiered caching分层缓存为IndicesRequestCachekey 对象启用序列化PR #10275并定义接口、监听器以扩展分层缓存支持PR #10753见 server/src/main/java/org/opensearch/indices/AbstractIndexShardCacheEntity.java并发聚合的查询剖析支持PR #9248并发的 composite/terms 等聚合也可被剖析流式索引Streaming Indexing引入基于 Netty 4 与 Project ReactorReactor Netty的实验性服务端 HTTP transportPR #9672RFC3339 兼容日期格式PR #11465新增日期时间格式支持 RFC3339 风格的日期字段解析集群级复制类型限制新增集群设置cluster.index.restrict.replication.typePR #11583防止建索引时通过设置覆盖复制类型。索引复制类型设置本身在 server/src/main/java/org/opensearch/cluster/metadata/IndexMetadata.java 中定义为index.replication.type扩展Extensions安全为扩展实现 on-behalf-of token 传递PR #8679与 service account token 提供PR #9618。主要变更Changed2.12.0 的行为变更涉及搜索、聚合、摄取、快照与测试基础设施等多个层面搜索与聚合force merge 的only_expunge_deletes尊重最大段大小PR #10036并发聚合限制Sampler 与 Diversified Sampler 聚合禁用并发执行PR #11087并发分段搜索下的 composite 聚合暂时禁用PR #12375terms 聚合 slice 启发式并发分段搜索下采用slice_size shard_size启发式并正确计算doc_count_errorPR #11732日期直方图优化无子聚合时性能提升PR #11083并将 fast filter 优化应用于 composite 聚合的 date histogram 源PR #11505查询性能优化关键字字段 MultiTerm 查询PR #7057、数值精确匹配PR #11209、布尔解析PR #11308与 Datetime 字段缓存PR #4558均获得性能改进利用 VarHandles 将字节数组按原始类型解释PR #11362IP 字段仅启用doc_values时也可支持搜索PR #11508。摄取与管道搜索管道支持异步 request/response 处理器PR #10598remove ingest 处理器禁止删除部分元数据字段PR #10895/#11607_cat/shards新增已删除文档计数PR #11678。集群与运维leader/follower 检查超时改为动态设置PR #10528discovery.ec2.endpoint自动补全 schemePR #11512并修复其协议自动添加引入的回归PR #11609采样支持按 action 覆盖与基于 transport action 的自定义采样器PR #9621支持通过SearchRequestOperationsCompositeListenerFactory动态添加SearchRequestOperationsListenersPR #11526RestClient 恢复对 Java 8 的支持PR #11562集成测试的集群管理被抽取为 JUnit test rulePR #11877/#12000规避 JDK 21.0.2 引入的 JDK-8323659 回归PR #11968保证 Jackson 2.16.0 引入的默认最大值限制与 OpenSearch 设置不冲突PR #11890。分层缓存与遥测为IndicesRequestCachekey 序列化、定义分层缓存接口与监听器PR #10275/#10753遥测 tracer/metric 增加启用开关及集成测试PR #10395为 transport bulk action 与 transport shard bulk action 增加索引埋点PR #10273。其他Rounding 类公共部分被重构进独立的 round 包PR #11023并移除相应的废弃类见 Removed 部分查询剖析支持捕获更多查询与聚合类型的信息PR #11582。问题修复Fixed本版本的修复覆盖摄取、复制、查询与安全等多个维度主要修复包括摄取类dissect 处理器解析空方括号失败PR #9255class_cast_exception——向 ingest simulate API 的_version等元数据字段传 int 时的类型转换异常PR #10101DotExpanderProcessor 调用newConfigurationException()时参数错误PR #10737带点号的扁平对象字段flat object fields解析PR #11425lang-painless单行注释解析PR #11815复制类索引损坏时 Segment Replication 的ShardLockObtainFailedExceptionPR #10370主分片迁移后复制延迟持续增长PR #11238bulk 中带retry_on_conflict的 update action 卡死PR #11152查询与索引per-request 延迟最后一阶段未被追踪PR #10934frozen 上下文下canMatchSearchAfter处理PR #11249ReorganizingLongHash内存泄漏PR #11953数值类型增加advance(int)以启用 point-based 优化PR #12089远程存储与分片均衡远程分片均衡器修复及无用变量清理PR #11167过滤 throttled 节点时的远程分片均衡器问题PR #11724阻止在索引创建时设置 remote_snapshot 存储类型PR #11867遥测与线程上下文线程上下文未正确清理导致 trace 混乱PR #10873DefaultSpanScope在 detach 时恢复错误的 spanPR #11316本地 transport 埋点的 trace 上下文传播PR #11490其他noop_update_total指标无法被 bulk API 更新PR #11485/#11917Delete PIT 端点无 PIT 时调用出错PR #11711删除lang-painless模块发布中的 shadowJarPR #11369SuggestSearch 测试通过强制 refresh 修复重复跳过问题PR #11068。依赖升级Dependencies2.12.0 的依赖升级中与运行时行为最相关的是Lucene 从 9.7.0 升级至 9.9.2PR #10276、#11421、#12063这是本版本对搜索能力影响最大的底层升级涉及索引格式与查询执行路径的全面更新Netty 从 4.1.100 升级至 4.1.106PR #11294、#11775、#12034Jackson 与 jackson-databind 从 2.15.2 升级至 2.16.0PR #11273并配套处理了其默认最大值限制与 OpenSearch 设置的冲突PR #11890log4j-core 从 2.20.0 升级至 2.22.1PR #10858 等Jetty 升级至 9.4.52.v20230823修复 GMS-2023-1857并继续升级至 9.4.53.v20231009PR #9822、#11539Reactor 生态reactor-core 升至 3.5.14、reactor-netty-core 升至 1.1.15PR #12042、#11350其他关键升级OpenTelemetry 从 1.32.0 升至 1.34.1PR #11891commons-io升至 2.15.1、commons-lang3升至 3.14.0、bc-fips升至 1.0.2.4、okhttp升至 4.12.0、shiro-core升至 1.13.0 等。值得注意的是上述依赖版本如 Lucene 10.5.1、log4j 2.25.5、jackson 3.2.2在 server/licenses/ 与 gradle/libs.versions.toml 中均有对应记录可用于核对当前仓库实际使用的依赖清单。小结OpenSearch 2.12.0 是一个以性能与可观测性为主旋律的版本并发分段搜索正式 GA 并配套剖析工具Query Insights 框架与 Top N 查询为慢查询治理提供了新抓手远程集群状态的上传/下载/自动恢复补齐了远程存储场景的关键拼图而 community_id、copy、remove_by_pattern 等新处理器与搜索管道的异步化则进一步提升了数据管道编排的灵活性。对于在生产环境使用远程存储、需要精细化查询剖析或正在构建安全分析管道的团队本版本具备较高的升级价值。赞分享搜索引擎全文检索可观测性数据分析【免费下载链接】OpenSearch Open source distributed and RESTful search engine.项目地址https://gitcode.com/gh_mirrors/op/OpenSearch点击查看免费下载相关推荐OpenSearch 2.11.0 版本特性深度解读远程存储并行下载、可配置合并策略与可观测性增强OpenSearch 2.11.0 版本特性深度解读远程存储并行下载、可配置合并策略与可观测性增强 2023 年 10 月 12 日发布的 OpenSearc搜索引擎全文检索可观测性数据分析OpenSearch 3.5.0 版本特性全解析搜索、存储、传输与可观测性关键更新OpenSearch 3.5.0 版本特性全解析搜索、存储、传输与可观测性关键更新 导读 本文基于 OpenSearch 3.5.0 官方 Release N搜索引擎全文检索可观测性数据分析OpenSearch 3.1.0 版本深度解析基于规则的自动标签、远程存储增强与搜索性能全面升级OpenSearch 3.1.0 版本深度解析基于规则的自动标签、远程存储增强与搜索性能全面升级 导读 OpenSearch 3.1.0 于 2025 年 6搜索引擎全文检索可观测性数据分析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
