首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一个命令,自然语言查询,Elasticsearch数据直达终端

一个命令,自然语言查询,Elasticsearch数据直达终端

原创
作者头像
点火三周
发布2026-08-30 10:52:46
发布2026-08-30 10:52:46
50
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

在终端中输入一个自然语言问题,官方的 Elastic GitHub Copilot CLI 插件会检查你的索引 schema,生成相应的 Elasticsearch 查询语言 (ES|QL) 查询,并运行它,最终以格式化表格的形式返回结果。无需 Kibana,也无需手动编写查询语法。一个命令即可搞定!该插件现已在 Awesome GitHub Copilot marketplace 上线。

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

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

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

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

代码语言:sh
复制
npm install -g @github/copilot

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

安装后,运行以下命令验证你的 Copilot 会话:

代码语言:sh
复制
copilot

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

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

安装 Elasticsearch 插件

Elastic 插件已发布在 Awesome GitHub Copilot marketplace,这是 GitHub 社区精选的 Copilot CLI 代理、技能和配置集合。该市场默认已在 Copilot CLI 中注册。安装只需一个命令。

代码语言:sh
复制
copilot plugin install elasticsearch@awesome-copilot

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

配置 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” 结尾。

Elasticsearch cluster URL in Kibana used to configure the GitHub Copilot CLI Elasticsearch plugin, with API keys button highlighted
Elasticsearch cluster URL in Kibana used to configure the GitHub Copilot CLI Elasticsearch plugin, with API keys button highlighted

3. 获取你的 ELASTICSEARCH_API_KEY 在 Kibana 中,前往 Stack Management > Security > API Keys,或者在右上角的搜索框中输入“API Keys”,然后创建一个 API 密钥。为你的 API 密钥命名,并保留默认设置。复制编码后的密钥。完成此操作后,你可以返回并删除此密钥,以免留下一个已过期但具有完整权限的密钥。

Searching for API Keys in Kibana to generate an Elasticsearch API key for the GitHub Copilot CLI plugin configuration
Searching for API Keys in Kibana to generate an Elasticsearch API key for the GitHub Copilot CLI plugin configuration
Creating an Elasticsearch API key in Kibana: setup screen showing key name, Personal type and disabled toggles for expiration date and security privileges
Creating an Elasticsearch API key in Kibana: setup screen showing key name, Personal type and disabled toggles for expiration date and security privileges

4. 获取你的 ELASTIC_MCP_URL 前往 Agents > View all tools > Manage MCP,并复制你的 MCP 服务器 URL。

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

代码语言:json
复制
ELASTICSEARCH_URL="your-elasticsearch-url"
ELASTICSEARCH_API_KEY="your-encoded-api-key"
ELASTIC_MCP_URL="your-elasticsearch-mcp-url"

与在 ~/.bashrc~/.zshrc 中导出变量相比,这种方法更受推荐,特别是当你需要在多个集群或环境之间切换时。

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

代码语言:sh
复制
set -a && source .env && set +a

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

为了测试此功能,我们建议安装 Kibana 中提供的 ecommerce 订单数据集。它包含一个名为 kibana_sample_data_ecommerce 的索引,其中包含 4,675 个订单,以及产品类别、定价和地理信息。

要安装示例数据,请在 Kibana 中打开 Integrations 页面(从顶部搜索栏搜索“Integration”)并安装“Sample Data”。更多详细信息,请参阅此处的文档:https://www.elastic.co/docs/explore-analyze/#gs-get-data-into-kibana

如何使用 @elasticsearch 代理

安装后,Copilot 会通过自定义的 @elasticsearch 代理为你处理工具路由。你可以询问有关集群的问题,它将自动调用 Elasticsearch MCP 工具。

让我们进行一次快速的发现检查。我们建议传递 --allow-tool 'shell' 标志,以确保 Copilot 拥有执行底层后台查询的权限:

代码语言:sh
复制
copilot -p "@elasticsearch Can you list my available Elasticsearch indices?" --allow-tool 'shell'

Copilot 将连接到你的集群,获取索引数据,并在终端中返回一个整洁的表格:

代码语言:json
复制
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 提出关于数据的自然语言问题。

尝试运行此提示:

代码语言:sh
复制
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'

在幕后,代理会尝试几种不同的执行方式。首先,它会尝试 Node.js 命令并失败,然后它会检查你的集群是否在本地机器上运行(https://localhost:9200)并失败。然后它会检查你的环境变量并成功。

  1. 调用 MCP 服务器以检查 kibana_sample_data_ecommerce 的映射。
  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
  1. 对 Elasticsearch API 执行查询。
  2. 以格式化的 Markdown 表格渲染结果。
代码语言:json
复制
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 发现、查询生成和执行都在后台进行。你只需获得结果。

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

将 Model Context Protocol 直接集成到 GitHub Copilot CLI 中,允许开发者使用自然语言与 Elasticsearch 数据进行交互。无论你是在调试应用程序日志中的生产问题,还是在分析电商收入,你现在都可以即时获得答案。

常见问题

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

安装 Elastic GitHub Copilot CLI 插件。设置完成后,用简单的英语向 @elasticsearch 代理提问,它会生成并运行针对你的集群的 ES|QL 查询,并将结果以格式化表格的形式返回到你的终端。

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

是的。Elastic GitHub Copilot CLI 插件使用 Elasticsearch 的 MCP 服务器来检查你的索引 schema,并将自然语言问题自动转换为有效的 ES|QL 查询。你无需了解 ES|QL 语法即可获得结果。

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

MCP 服务器集成需要 Elasticsearch 9.2 或更高版本,或者 Elastic Cloud Serverless 部署。早期版本不支持基于 MCP 的查询工作流程。

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

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

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

查询的准确性取决于你的索引映射对数据的描述程度。模糊的字段名或复杂的跨索引查询可能需要手动优化 ES|QL。该插件最适合探索性查询和数据发现,而不是生产查询管道。

我需要付费的 GitHub Copilot 订阅才能使用此功能吗?

需要任何 Copilot 计划(免费版、专业版、商业版、企业版);免费版的高级请求数量有限。


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 什么是 GitHub Copilot CLI,以及如何安装它?
  • 安装 Elasticsearch 插件
  • 配置 Elasticsearch
  • 安装示例数据以测试你的 Elasticsearch 查询
  • 如何使用 @elasticsearch 代理
  • 如何使用自然语言和 ES|QL 查询 Elasticsearch?
  • 开始从终端查询你的 Elasticsearch 数据
  • 常见问题
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档