一条命令。自然语言。你的 Elasticsearch 数据,直接进入终端

作者:来自 Elastic Greg Crist

用纯英文在终端中查询你的 Elasticsearch 数据。官方 Elastic GitHub Copilot CLI 插件会自动生成并运行针对你集群的 ES|QL 查询。无需 Kibana,无需手动编写语法。

在终端中输入一个自然语言问题。官方 Elastic GitHub Copilot CLI 插件会检查你的索引 schema,生成 Elasticsearch 查询语言(ES|QL)查询,并执行它,然后返回一个格式化表格。无需 Kibana,无需手动编写查询语法。一条命令即可完成。该插件现已在 Awesome GitHub Copilot marketplace 上提供。

Elastic 已将我们的 skills 和插件源码发布在官方 elastic/agent-skills 仓库中。

什么是 GitHub Copilot CLI,它如何安装?

GitHub Copilot CLI 是一个 AI agent,它将 Copilot 的模型直接带入你的终端。它可以帮助开发者在本地开发环境的上下文中生成代码、编辑文件以及运行 shell 命令。当与 Elastic 插件结合时,它允许开发者通过自然语言在 shell 中直接查询 Elasticsearch 数据。

你可以使用你偏好的包管理器进行安装,例如通过 npm

bash 复制代码
`npm install -g @github/copilot`AI写代码

(如果你更喜欢 Homebrew,可以运行 brew install copilot-cli 。Windows 用户可以使用 winget install GitHub.Copilot)。

安装完成后,通过运行以下命令来验证你的 Copilot 会话身份:

go 复制代码
`copilot`AI写代码

然后输入 /login,并按照浏览器中的提示完成操作。

登录成功后,输入 /quit 返回到 shell。

安装 Elasticsearch 插件

Elastic 插件已发布在 Awesome GitHub Copilot marketplace,这是 GitHub 面向 Copilot CLI 的社区精选集合,包含 agents、skills 以及配置。该 marketplace 在 Copilot CLI 中默认已注册。安装只需一条命令。

css 复制代码
`copilot plugin install elasticsearch@awesome-copilot`AI写代码

要验证它是否安装正确,请输入 copilot plugin list。你应该会看到 elasticsearch@awesome-copilot 处于 active 状态并可正常使用。

配置 Elasticsearch

该插件通过三个环境变量连接 Elasticsearch:ELASTICSEARCH_URLELASTICSEARCH_API_KEYELASTIC_MCP_URL。如果你想使用 Model Context Protocol(MCP) 服务器集成,则需要 Elasticsearch 9.2+ 或 Elastic Cloud Serverless

1. 激活集群: 你可以在 Elastic Cloud 上启动免费试用,或者使用 start-local 脚本 在本地运行(curl -fsSL https://elastic.co/start-local | sh)。

2. 获取你的 ELASTICSEARCH_URL 该值可以在 Kibana 首页右上角找到,通常以 ".es.region.elastic.cloud:443" 结尾。

3. 获取你的 ELASTICSEARCH_API_KEY 在 Kibana 中进入 Stack Management > Security > API Keys,或者在右上角搜索框中输入 "API Keys",然后创建一个 API key。给 API key 起一个名称,并保留默认设置。复制编码后的 key。完成本次练习后,你可以回去删除该 key,以避免留下过期的全权限 key。

3. 获取你的 ELASTICSEARCH_API_KEY 在 Kibana 中进入 Stack Management > Security > API Keys,或者在右上角搜索框中输入 "API Keys",然后创建一个 API key。给你的 API key 命名,并保留默认设置。复制编码后的 key。完成本次练习后,你可以回到这里删除这个 key,以避免留下一个已过期的、具有完整权限的 key。

4. 获取你的 ELASTIC_MCP_URL 进入 Agents > View all tools > Manage MCP,然后复制你的 MCP Server URL。

在你的项目目录中创建一个 .env 文件,这样插件就可以进行身份验证,而不需要全局 shell 配置。

ini 复制代码
`

1.  ELASTICSEARCH_URL="your-elasticsearch-url"

3.  ELASTICSEARCH_API_KEY="your-encoded-api-key"

5.  ELASTIC_MCP_URL="your-elasticsearch-mcp-url"

`AI写代码

这种方式比在 ~/.bashrc~/.zshrc 中导出变量更推荐,尤其是在你需要在多个集群或环境之间切换时。

使用以下 shell 命令加载 .env 文件:

bash 复制代码
`set -a && source .env && set +a` AI写代码

安装示例数据用于测试你的 Elasticsearch 查询

为了进行测试,我们建议安装 Kibana 中提供的 ecommerce 订单数据集。该数据集包含一个名为 kibana_sample_data_ecommerce 的索引,其中包含 4,675 条订单记录,涵盖产品类别、价格以及地理信息。

要安装示例数据,请打开 Kibana 的 Integrations 页面(在顶部搜索栏中输入 "Integration"),然后安装 "Sample Data"。更多详情请参考文档:Explore and analyze data with Kibana | Elastic Docs

如何使用 @elasticsearch agent

安装完成后,Copilot 会通过自定义的 @elasticsearch agent 自动处理工具路由。你可以直接询问关于集群的问题,它会自动调用 Elasticsearch MCP 工具。

我们来做一个快速发现检查(discovery check)。建议添加 --allow-tool 'shell' 参数,以确保 Copilot 有权限执行底层后台查询:

arduino 复制代码
`copilot -p "@elasticsearch Can you list my available Elasticsearch indices?" --allow-tool 'shell'`AI写代码

Copilot 将会连接你的 cluster,获取 index data,并直接在你的 terminal 中返回一个干净的 table:

sql 复制代码
`

1.  Here are your available Elasticsearch indices:

3.  | Index Name | Health | Status |
4.  | :--- | :--- | :--- |
5.  | kibana_sample_data_ecommerce | green | open |
6.  | system-logs-2026 | green | open |

`AI写代码

如何使用自然语言和 ES|QL 查询 Elasticsearch?

Elastic GitHub Copilot CLI 插件基于 ES|QL,这是 Elastic 用于数据探索的管道式查询语言。你不需要手动查语法,也不需要切换到 Kibana,只需用自然语言向 Copilot 提问你的数据即可。

尝试运行以下提示:

arduino 复制代码
`copilot -p "@elasticsearch Use ES|QL to find the top 5 product categories by total sales revenue in the kibana_sample_data_ecommerce index. Show me the results in a table." --allow-tool 'shell'`AI写代码

在底层,这个 agent 会尝试几种不同的执行方式。首先,它会尝试 node.js 命令但会失败,然后它会检查你的集群是否在本地机器上运行(https://localhost:9200)但也会失败。接着它会检查你的环境变量,并最终成功。

  1. 调用 MCP server 来检查 kibana_sample_data_ecommerce 的 mapping。

  2. 构建正确的 ES|QL 查询:

    sql 复制代码
    `FROM kibana_sample_data_ecommerce | STATS total_revenue = SUM(taxful_total_price) BY category.keyword | SORT total_revenue DESC | LIMIT 5`AI写代码
  3. 在 Elasticsearch API 上执行该查询。

  4. 将结果渲染为格式化的 Markdown 表格。

markdown 复制代码
`

1.  Here are the top 5 product categories by total sales revenue:

3.  | Rank | Category | Total Revenue |
4.  |---|---|---|
5.  | 1 | Men's Clothing | 149,393.91 |
6.  | 2 | Women's Clothing | 135,099.91 |
7.  | 3 | Women's Shoes | 105,479.17 |
8.  | 4 | Men's Shoes | 91,797.92 |
9.  | 5 | Women's Accessories | 60,830.31 |

`AI写代码

模式发现(Schema discovery)、查询生成以及执行都会在后台完成。你只会看到最终结果。

从终端开始查询你的 Elasticsearch 数据

将 Model Context Protocol 直接引入 GitHub Copilot CLI,使开发者可以通过自然语言与 Elasticsearch 数据交互。无论你是在排查应用日志中的生产问题,还是在分析电商收入,现在都可以即时获得答案。

常见问题(Frequently asked questions)

如何在不切换到 Kibana 的情况下从终端查询 Elasticsearch?

安装 Elastic GitHub Copilot CLI 插件。完成设置后,用纯英文向 @elasticsearch agent 提问,它会生成并执行针对你集群的 ES|QL 查询,并在终端以格式化表格返回结果。

我可以用自然语言生成 ES|QL 查询吗?

可以。Elastic GitHub Copilot CLI 插件使用 Elasticsearch 的 MCP server 来检查你的 index schema,并自动将自然语言问题转换为有效的 ES|QL 查询。你不需要了解 ES|QL 语法也能获得结果。

MCP 集成需要哪个版本的 Elasticsearch?

MCP server 集成需要 Elasticsearch 9.2 或更高版本,或 Elastic Cloud Serverless 部署。较早版本不支持基于 MCP 的查询流程。

Elastic GitHub Copilot CLI 插件是开源的吗?

是的。该插件发布在 github.com/elastic/age...,可用于安装、贡献或 fork。它在本地运行,并通过环境变量连接你的 Elasticsearch 集群。该插件也可以在 Awesome GitHub Copilot marketplace 中找到。

自然语言 ES|QL 查询生成有哪些限制?

查询准确性取决于你的 index mapping 对数据的描述程度。字段名歧义或复杂的多 index 查询可能需要手动优化 ES|QL。该插件更适合探索性查询和数据发现,而不是生产级查询流水线。

使用这个功能需要付费的 GitHub Copilot 订阅吗?

需要任意 Copilot 计划(Free、Pro、Business、Enterprise);免费层级有一定的 premium requests 限制。

原文:Query Elasticsearch with natural language in your terminal - Elasticsearch Labs

相关推荐
vivo互联网技术4 小时前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
Elasticsearch5 小时前
热力直达:使用 Elasticsearch 插件将 ES|QL 引入你的 Grafana 仪表板
elasticsearch
小猿姐12 小时前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
Elasticsearch1 天前
使用 Elastic Agent Builder 和 Sarvam AI 构建多语言语音 agent
elasticsearch
武子康5 天前
调查研究-197 FAISS vs Elasticsearch 全面对比:从向量检索、全文搜索到 RAG 选型指南
人工智能·elasticsearch·agent
Elasticsearch6 天前
Elasticsearch ES|QL:现已支持视图、子查询和读取时模式定义
elasticsearch
Elasticsearch9 天前
Kibana 中的 SNMP 拓扑数据:从采集到 Canvas
elasticsearch