一条命令。自然语言。你的 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:
npm install -g @github/copilot(如果你更喜欢 Homebrew,可以运行brew install copilot-cli。Windows 用户可以使用winget install GitHub.Copilot)。
安装完成后,通过运行以下命令来验证你的 Copilot 会话身份:
copilot然后输入/login,并按照浏览器中的提示完成操作。
登录成功后,输入/quit返回到 shell。
安装 Elasticsearch 插件
Elastic 插件已发布在 Awesome GitHub Copilot marketplace,这是 GitHub 面向 Copilot CLI 的社区精选集合,包含 agents、skills 以及配置。该 marketplace 在 Copilot CLI 中默认已注册。安装只需一条命令。
copilot plugin install elasticsearch@awesome-copilot要验证它是否安装正确,请输入copilot plugin list。你应该会看到elasticsearch@awesome-copilot处于 active 状态并可正常使用。
配置 Elasticsearch
该插件通过三个环境变量连接 Elasticsearch:ELASTICSEARCH_URL、ELASTICSEARCH_API_KEY和ELASTIC_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 配置。
ELASTICSEARCH_URL="your-elasticsearch-url" ELASTICSEARCH_API_KEY="your-encoded-api-key" ELASTIC_MCP_URL="your-elasticsearch-mcp-url"这种方式比在~/.bashrc或~/.zshrc中导出变量更推荐,尤其是在你需要在多个集群或环境之间切换时。
使用以下 shell 命令加载.env文件:
set -a && source .env && set +a安装示例数据用于测试你的 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 会通过自定义的@elasticsearchagent 自动处理工具路由。你可以直接询问关于集群的问题,它会自动调用 Elasticsearch MCP 工具。
我们来做一个快速发现检查(discovery check)。建议添加--allow-tool 'shell'参数,以确保 Copilot 有权限执行底层后台查询:
copilot -p "@elasticsearch Can you list my available Elasticsearch indices?" --allow-tool 'shell'Copilot 将会连接你的 cluster,获取 index data,并直接在你的 terminal 中返回一个干净的 table:
Here are your available Elasticsearch indices: | Index Name | Health | Status | | :--- | :--- | :--- | | kibana_sample_data_ecommerce | green | open | | system-logs-2026 | green | open |如何使用自然语言和 ES|QL 查询 Elasticsearch?
Elastic GitHub Copilot CLI 插件基于 ES|QL,这是 Elastic 用于数据探索的管道式查询语言。你不需要手动查语法,也不需要切换到 Kibana,只需用自然语言向 Copilot 提问你的数据即可。
尝试运行以下提示:
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'在底层,这个 agent 会尝试几种不同的执行方式。首先,它会尝试 node.js 命令但会失败,然后它会检查你的集群是否在本地机器上运行(https://localhost:9200)但也会失败。接着它会检查你的环境变量,并最终成功。
调用 MCP server 来检查
kibana_sample_data_ecommerce的 mapping。构建正确的 ES|QL 查询:
FROM kibana_sample_data_ecommerce | STATS total_revenue = SUM(taxful_total_price) BY category.keyword | SORT total_revenue DESC | LIMIT 5在 Elasticsearch API 上执行该查询。
将结果渲染为格式化的 Markdown 表格。
Here are the top 5 product categories by total sales revenue: | Rank | Category | Total Revenue | |---|---|---| | 1 | Men's Clothing | 149,393.91 | | 2 | Women's Clothing | 135,099.91 | | 3 | Women's Shoes | 105,479.17 | | 4 | Men's Shoes | 91,797.92 | | 5 | Women's Accessories | 60,830.31 |模式发现(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/agent-skills,可用于安装、贡献或 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