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

一条命令。自然语言。你的 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_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 配置。

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)但也会失败。接着它会检查你的环境变量,并最终成功。

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

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

    FROM kibana_sample_data_ecommerce | STATS total_revenue = SUM(taxful_total_price) BY category.keyword | SORT total_revenue DESC | LIMIT 5
  3. 在 Elasticsearch API 上执行该查询。

  4. 将结果渲染为格式化的 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