作者:来自 新智锦绣 Jin Haifeng

前言
上期我们介绍将 Elasticsearch 集群从 8.17.2 升级到了最新的 9.2.4 版本。虽然官方文档明确指出不能直接跨大版本升级,但实际操作中仍然遇到了一些意想不到的问题。升级后所有日志索引都可以正常工作,但升级后 AI 助手和 Attack Discovery 功能失效。虽然成功可以 AI 大模型连接正常,但 AI 助手及知识库和 attack discovery 都不能正常工作。
查询了 Elastic 官网/support 知识库,也没找到直接的类似问题的解决方案。最后使用新智锦绣科技(北京)有限公司开发的 NewmindExAI 易捷问数平台,成功找到问题原因及解决方法。
如果你也在考虑升级 Elasticsearch 到 9.x 版本,或者遇到了类似的 AI 功能异常问题,希望这篇文章能为你提供一些参考和帮助。
一、NewmindExAI 易捷问数平台
易捷问数平台(NewmindExAI)是一款开箱即用的企业级一体化智能数据分析平台,基于 Apple Mac Studio 硬件,以 Elastic 为数据底座,同时支持集成第三方多种数据源,集成本地 LLM、NewRAG 智能知识库、NewFlow 智能中枢工作流、NewChat 智能聊天为一体,实现 LLM 驱动的认知一体化解决方案。

二、意外出现:AI 助手功能异常
2.1 问题发现
ES 9.2.4升级完成后,当尝试使用 Security → Attack Discovery 功能时,遇到了以下错误:
go
`Attack discovery data client not initialized`AI写代码
当然首先到 chatgpt 去找答案,经过一番问答交互,无果


由于 NewChat(NewmindExAI)的智能聊天工具是直接通过 mcp 连接到 ES 环境中的,它是对当前集群环境可以直接感知的。下面是和它交互后给出的答复:





经过上面的错误信息给 NewChat 分析和交互,了解到这个问题是由于版本升级后索引不兼容造成的:
2.2 问题分析
NewChat 从给出的日志信息找到问题:
Mapper for [semantic_text] conflicts with existing mapper:``Cannot update parameter [inference_id] from [elastic-security-ai-assistant-elser2] to [.elser-2-elasticsearch]
这个错误说明:
- 旧版本配置:8.x 版本使用的是自定义 ELSER 模型 elastic-security-ai-assistant-elser2
- 新版本配置:9.x 版本尝试使用标准 ELSER 模型 .elser-2-elasticsearch
- Elasticsearch 限制:不允许直接修改已存在字段的 inference_id 参数
2.3 受影响的索引
同时也找到以下索引存在映射冲突:
markdown
`
1. .kibana-elastic-ai-assistant-conversations-*
2. .kibana-elastic-ai-assistant-knowledge-base-*
3. .kibana-observability-ai-assistant-conversations-*
4. .kibana-observability-ai-assistant-kb-*
`AI写代码
三、解决方案:删除并重建 AI 助手索引
3.1 解决思路
经过分析,我们确定了解决方案:
- 删除冲突的索引:移除包含旧映射的 AI 助手索引
- 重启 Kibana:让 Kibana 使用新的映射重新创建索引
- 重新配置 AI 连接器:确保使用正确的 AI 模型配置
3.2 详细操作步骤
步骤 1:查找冲突的索引
首先,我们需要确认哪些索引存在问题:
bash
`
1. #通过 Kibana Dev Tools 执行
2. GET /_cat/indices/.kibana-*ai-assistant*?v
`AI写代码
步骤 2:通过 Kibana Dev Tools 删除索引
打开 Kibana → Dev Tools
在 Console 中执行以下命令:
sql
`1. //由于这些索引是由data_stream关联,无法直接删除索引,我们可以删除数据流来解决
3. DELETE /_data_stream/logs-elastic_agent.fleet_server-default
4. DELETE /_data_stream/metrics-fleet_server.agent_status-default
5. DELETE /_data_stream/metrics-elastic_agent.fleet_server-default
6. DELETE /_data_stream/logs-elastic_agent.fleet_server-default`AI写代码
点击 ▶️ 执行按钮
执行结果:
markdown
`
1. {
3. "acknowledged":true
4. }
`AI写代码
✅索引删除成功!
步骤 3:重启 Kibana 服务
bash
`
1. # 在 elastic-03 节点执行
2. sudo systemctl restart kibana
3. # 查看启动日志
4. sudo tail -f /var/log/kibana/kibana.log
`AI写代码
观察日志,应该看到类似以下内容:
bash
`2. {
3. "message":"Installing index template .kibana-elastic-ai-assistant-index-template-conversations",
4. "log": {
5. "level":"INFO",
6. "logger":"plugins.elasticAssistant.service"
7. }
8. }
10. {
11. "message":"Installing index template .kibana-elastic-ai-assistant-index-template-knowledge-base",
12. "log": {
13. "level":"INFO",
14. "logger":"plugins.elasticAssistant.service"
15. }
16. }`AI写代码
这表明 Kibana 正在使用新的映射重新创建索引。
步骤 4:配置 AI 连接器
重启完成后,需要配置 AI 连接器:
-
进入Stack Management → Connectors
-
点击Create connector
-
选择你的 AI 提供商(如 OpenAI、Azure OpenAI、阿里云通义千问等)
-
填写配置信息
markdown` 1. Name:Attack Discovery AI 2. Connector type:OpenAI (或其他) 3. URL:https://api.openai.com/v1 4. API Key:sk-xxxxx... 5. Model:gpt-4 `AI写代码 -
点击 Save
步骤 5:在 Security 中配置 AI 助手
-
进入Security → Get Started
-
点击右上角的齿轮图标 →Settings
-
找到AI Assistant部分
-
选择刚才创建的连接器
-
保存设置
3.3 验证修复结果
(1)检查索引状态
arduino
`
1. # 通过 Dev Tools 执行
2. GET /_cat/indices/.kibana-*ai-assistant*?v
3. # 应该看到新创建的索引:
4. health status index uuid pri rep docs.count docs.deleted store.size pri.store.size dataset.size
5. green open .ds-.kibana-elastic-ai-assistant-prompts-default-2026.02.08-000001 NNLDhE4HQC26EDvGL1bQzw 1 1 0 0 498b 249b 249b
6. green open .kibana-observability-ai-assistant-conversations-000001 ynEBvh06QFWCjF7UKQVZyA 1 1 0 0 498b 249b 249b
7. green open .ds-.kibana-elastic-ai-assistant-knowledge-base-default-2026.02.08-000001 MUH-wCUiQsCFa_02zYjz2g 1 1 0 0 498b 249b 249b
8. green open .kibana-observability-ai-assistant-kb-000003 HYawJO5QRlqkZVqlYe7d5g 1 1 0 0 498b 249b 249b
9. green open .kibana-elastic-ai-assistant-checkpoints-default bgD7_49dTzS6GGD_0RzZhg 1 1 0 0 498b 249b 249b
10. green open .ds-.kibana-elastic-ai-assistant-anonymization-fields-default-2026.02.08-000001 gTxmh6GRTZGnc3PXKqDtEw 1 1 114 0 28.4kb 14.2kb 14.2kb
11. green open .ds-.kibana-elastic-ai-assistant-alert-summary-default-2026.02.08-000001 nvWnxOVuS_WWbb8C0kSdXQ 1 1 0 0 498b 249b 249b
12. green open .ds-.kibana-elastic-ai-assistant-conversations-default-2026.02.08-000001 IAReR9kcTy66EFH2CXy79w 1 1 0 0 498b 249b 249b
13. green open .kibana-elastic-ai-assistant-checkpoint-writes-default
`AI写代码
(2)检查映射配置
csharp
`2. GET /.kibana-elastic-ai-assistant-knowledge-base-default/_mapping`AI写代码
确认 inference_id 使用的是新的标准模型:
bash
`
1. {
2. "mappings": {
3. "properties": {
4. "semantic_text": {
5. "type": "semantic_text",
6. "inference_id": ".elser-2-elasticsearch"
7. }
8. }
9. }
10. }
`AI写代码
✅映射配置正确!
(3)测试 Attack Discovery 功能
-
进入Security → Attack Discovery
-
点击Generate按钮
-
等待分析完成(可能需要几分钟)
最后一切正常,你应该能看到 AI 分析的安全威胁发现结果。
七、总结
由于 NewCha t是直接和 ES 集群通过 MCP 连接在一起的,所以在 NewChat 里借助大模型来问数,就像 RAG 一样它 get 到的信息是当前集群的真实状态,从而保证借助大模型进行真实状态分析会给出更实际的答案。
而通过常规的 ChatGPT 类的聊天工具,我们只能把日志信息和特征码粘贴过去,由于它触摸不到真实的集群环境,所以只能猜测可能故障原因,无法给出更实际的答案。
写在最后
Elasticsearch 的版本升级是一项需要谨慎对待的工作,特别是跨大版本升级。对于在低版AI助手相关功能正常(企业版),升级后AI助手由于模型变更及兼容性问无法正常工作,所以集群本身的问题无法通过AI助手来获得得答案和进行诊断。
而 NewmindExAI 通过 MCP 连接到 ES 集群,充分补充了 ES 企业版才有的 AI 功能,从而极大地赋能 ES AI 能力。
Elasticsearch 官方升级指南
Kibana AI Assistant 文档
Elasticsearch Breaking Changes in 9.0
如果觉得本文对你有帮助,欢迎点赞、转发、收藏!
关于公司
感谢您关注新智锦绣科技(北京)有限公司!作为 Elastic 的 Elite 合作伙伴及 EnterpriseDB 在国内的唯一代理和服务合作伙伴,我们始终致力于技术创新和优质服务,帮助企业客户实现数据平台的高效构建与智能化管理。无论您是关注 Elastic 生态系统,还是需要 EnterpriseDB 的支持,我们都将为您提供专业的技术支持和量身定制的解决方案。