ES 的 Behavioral Analytics 9.0 起整块弃用,用到的要规划替代方案

举报
岳涛 发表于 2026/10/23 11:29:51 2026/10/23
【摘要】 ES 的 Behavioral Analytics(行为分析)从 9.0 起标记弃用,将在未来版本移除。

ES 的 Behavioral Analytics(行为分析)从 9.0 起标记弃用,将在未来版本移除。API 目前还能用,但会返回警告头。这是个"整块功能下线"的弃用,比单个参数弃用影响大——如果你在用,需要规划替代方案。

说明

来源和边界先交代:本文的依据出自 v9.4.2 标签下的官方文件(9.0.0.yml、search_application.put_behavioral_analytics.json、search_application.post_behavioral_analytics_event.json),文中引用的原文均来自这些文件。我没有启动集群、也没有跑测试,示例取自官方示例;哪些是文档写明、哪些是我的推断,正文里逐处标注。

01-9.0.0

图 1:官方文件 9.0.0.yml(v9.4.2 标签)。来源:GitHub elastic/elasticsearch v9.4.2 9.0.0.yml

官方条目

9.0 的 changelog 标为 deprecation(9.0.0.yml 第 2163–2173 行 @ v9.4.2),area: Search,PR 123010。

details:

Behavioral Analytics has been deprecated as of 9.0.0 and will be removed in a future release. The APIs will still work for now, but will emit warning headers that the API has been deprecated.

impact 是同一句的前半段:

Behavioral Analytics has been deprecated as of 9.0.0 and will be removed in a future release.

关键信息三条:

  • 从 9.0.0 起弃用;
  • 将在未来版本移除(没说具体版本);
  • API 目前仍可用,但会返回警告头。

02-search_application.put_behavioral_analyt

图 2:官方文件 search_application.put_behavioral_analytics.json(v9.4.2 标签)。来源:GitHub elastic/elasticsearch v9.4.2 search_application.put_behavioral_analytics.json

这个功能是什么

Behavioral Analytics 是一套收集和分析用户搜索行为的能力。

从 API 定义能看出它的形态——相关接口在 search_application 下(@ v9.4.2):

  • PUT _application/analytics/<name>——创建行为分析集合;
  • GET _application/analytics/<name>——读取;
  • DELETE _application/analytics/<name>——删除;
  • POST _application/analytics/<name>/event/<event_type>——上报事件。

最后那个是核心:上报用户的搜索、点击等行为事件,然后 ES 提供基于这些事件的聚合分析(比如哪些查询没有点击、哪些结果被点了)。这属于搜索质量优化的范畴——用真实用户行为来发现搜索的问题。

它的定位是搜索质量优化——通过分析"用户搜了什么、点了什么"来改进搜索体验。

03-search_application.post_behavioral_analy

图 3:官方文件 search_application.post_behavioral_analytics_event.json(v9.4.2 标签)。来源:GitHub elastic/elasticsearch v9.4.2 search_application.post_behavioral_analytics_event.json

API 路径的变化

查 API 定义时注意到一个细节:这些接口的路径前缀是 _application,归类在 search_application 下。

这说明 Behavioral Analytics 在架构上是归属于 Search Application 体系的,不是一个完全独立的功能。

理解这一点对判断"该往哪迁移"有帮助——既然它属于 Search Application 体系,那替代方案大概率也在那个体系里,或者是那套体系本身的演进。

(说明:这个"归属于 Search Application"的判断,是从 API 路径和文件归类得出的,未找到官方的架构说明佐证。我的建议是:如果要据此做迁移决策,再核实一次。)

当前的实际影响很小

按官方说法,API 现在还能用,只是响应里多了警告头。

所以当前的影响是:

  • 功能不受影响;
  • 调用方的日志里会出现警告——如果你们有监控 HTTP 响应头的机制,会看到;
  • 弃用日志里也会有记录。

没有报错、没有功能降级。 这是典型的 deprecation 而非 breaking,两者的处置节奏完全不同。

但"未来版本会移除"这句是重点——它是"会移除",不是"可能移除"。所以这是个有明确期限的任务,只是期限没公布。

为什么这比参数弃用影响大

把它和其它弃用对比一下:

条目 弃用什么 迁移工作量
force_source 移除 force_source 参数 删一行配置
远程集群证书认证弃用 远程集群证书模式 换个认证方式
Behavioral Analytics 弃用(本篇) 整块功能 要找替代方案

前两条是"改配置",第三条是"改方案"。

差别在于:参数弃用有明确的替代做法,而整个功能下线意味着你要重新实现它提供的能力——行为数据的采集、存储、分析这一整套。

所以判断是:这条要尽早评估,但不用立刻动手。评估的核心是“到底在不在用它、用它做什么”——这两问题的答案决定了它是个紧急任务还是可以直接记入待办。

先确认用没用

一,看有没有创建过 analytics 集合。

curl -s 'localhost:9200/_application/analytics' | python3 -m json.tool

能列出已有的集合。空的话说明没在用(或者已经清理过了)。这是最快的一条路径——一个请求就能有结论。

二,看代码里有没有上报事件的调用。

grep -rn "_application/analytics\|behavioral_analytics" --include=*.py --include=*.go --include=*.js --include=*.json .

三,看 Kibana 里有没有相关的行为分析配置。 这个功能可能通过界面使用,代码里 grep 不到。

建议是三条都做,尤其是第三条——这类分析功能常在界面上配置,不看界面会漏。而且三条的结果要互相印证:如果 API 里有集合但代码里没找到调用,那多半是界面在用。

如果确实在用,怎么办

官方没给替代方案(details 里只说"会移除")。所以下面是能想到的方向,不是官方建议:

一,自己在外部实现行为采集。 把搜索、点击事件写到自己的系统里(比如另一个 ES 索引、或者专门的 analytics 服务)。这是最直接的替代——反正行为数据本来也是你的业务数据。

二,看 Search Application 体系有没有新的能力。 既然 Behavioral Analytics 属于那个体系,后续可能有演进。关注后续版本的 changelog。

三,评估这些分析结论的实际价值。 这是个务实的角度:如果那些分析报表其实没人看,那功能下线正好省事,不用迁移。

倾向是先做第三条评估。 因为迁移这类功能的成本不低(要重新采集、重新算指标),而很多团队的实际使用情况是"当初配了,后来没人看"。先确认价值,再决定要不要迁移,比直接动手划算。

判断"有没有人在看"的办法也简单:看相关看板的访问记录,或者直接问一圈用搜索的同事。这类问题的答案通常比想象的清楚——要么立刻有人说“天天看”,要么没人说得上来。

警告头长什么样

details 里说"会返回警告头"(emit warning headers)。ES 的 REST 响应警告头是标准的 Warning 头,格式一般是:

Warning: 299 Elasticsearch-9.0.0-... "this API is deprecated"

(上面是示意格式,实际内容未抓取过,这里只是说明它出现在 HTTP 响应头里,不在响应体中。)

这一点对排查有实际意义:

  • 如果你只看响应体,看不到弃用提示;
  • 要看响应头,或者看服务端日志。

大多数 HTTP 客户端默认不打印响应头,所以很多人"用了很久也没看到警告"——是没往那个地方看,不是没有警告。

建议升级后显式检查一次响应头,尤其是依赖这类 API 的链路。做法很简单,curl -i 就能看到。

和 Kibana 的关系

既然这是个偏"分析"的功能,很可能通过 Kibana 界面使用。这意味着代码里 grep 不到,但功能确实在用。

前面把"看 Kibana"列为第三条排查路径,这里再强调一下为什么它重要:

  • 代码 grep 只能找到程序化调用;
  • 界面配置、看板、报表这类用法不在代码里;
  • 而分析类功能恰恰多为界面使用。

所以如果前两条排查都没结果,不要急着下“没在用”的结论,再看一眼 Kibana。这个检查花不了几分钟,但能避免误判——而误判的代价是到了移除那天才发现有东西挂了。

Behavioral Analytics 的聚合提供了什么

写这篇时想确认 Behavioral Analytics 的聚合分析能力具体提供了什么(比如有哪些指标)。

未能在 v9.4.2 的文档里找到这一块的完整说明(可能是搜的关键词不对,也可能文档确实已经弱化——毕竟功能已弃用)。

所以本篇对"它提供什么分析"只做了基于 API 形态的描述(采集事件 + 基于事件的分析),没有列出具体指标。如果你要评估替代方案需要这个清单,得去查 8.x 的文档或者 PR 123010。

和别的"整块功能下线"放一起看

ES 9.x 有几条都属于"功能级弃用",共同模式值得总结:

  • 官方会明确说"将在未来版本移除"(不是"可能");
  • 当前版本仍可用,只是有警告;
  • 通常不给替代方案——因为它本身可能是被更新的方案取代了,或者用的人太少。

对这类条目,处理顺序是固定的:

  1. 先确认用没用(这一步最重要,多数情况是没用);
  2. 用了的话,评估它的实际价值;
  3. 有价值的再找替代或自行实现。

跳到第 3 步是常见的浪费——花很多精力迁移一个其实没人用的功能。最坏的情况是,迁移做了两周,做完发现新的报表同样没人看。

弃用的两种粒度

写到这里想到一个区分,对读 changelog 有用:ES 的弃用有两种粒度。

粒度的第一种:参数/设置级。 比如 force_source、enable_for_single_data_node、远程集群证书模式。特征是——功能还在,只是某个用法不能用了。处置是改配置。

粒度的第二种:功能/API 级。 比如本篇的 Behavioral Analytics,以及前面写过的 rollup(Rollup 弃用)。特征是——整块能力要没了。处置是重新规划。

分辨两者看 details 的措辞:

  • 说"某个参数/设置被弃用" → 第一种;
  • 说"某个功能/API 被弃用、将在未来版本移除" → 第二种。

这个分辨影响排期。第一种可以攒着一起改,第二种要单独评估——因为它可能牵出一整块改造。

排期上的做法是:功能级弃用单独建条目跟踪,不和参数清理混在一起。后者量大但不难,前者量少但可能很重,混在一起会让重的那条被淹没。

写在最后

这条 deprecation 当前不影响任何东西——API 照常工作。

这条值得写是因为它属于"整块功能下线",和大多数"参数弃用"性质不同。这类条目的处置是重新规划一块能力,不是改配置,工作量大得多。

一,先确认用没用。 三条排查路径都要做(API、代码、Kibana 界面)。别漏了 Kibana——分析类功能常通过界面使用,只看代码会误判成"没在用"。

二,用了的话先评估价值,再决定要不要迁移。 直接动手迁移是常见浪费——先确认那些分析结论有没有人在看。

三,"将在未来版本移除"是有期限的任务。 记进待办,在下个主版本前处理掉,并且单独跟踪,不要和参数清理混在一起。

参考

本文对照 Elasticsearch v9.4.2 标签的 changelog 与 REST API 规范核对,引文逐字取自原文。"Behavioral Analytics 归属于 Search Application 体系"的判断来自 API 路径归类,未找到官方架构说明佐证;"它提供哪些分析指标"本文未找到完整文档,已在正文标注。文中替代方向是建议,非官方方案。撰写时未启动集群、未运行测试。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。