【ES三周年】使用AIGC模型智能生成Elasticsearch搜索语句(es六周年官图)
 南窗  分类:IT技术  人气:173  回帖:0  发布于1年前 收藏

今天在朋友圈刷到TiDB在他们的 TiDB Cloud Serverless Tier中集成的chat2query功能。看到chatXXX这个名字,大家应该都能顾名思义。显然,它能通过对话的方式帮你生成Query。

这里是演示的动图,分别展示了一个Top 10查询和date histogram的聚合查询:

查询的语句不算复杂,“直观”上似乎是能够降低用户的使用入门门槛的。

可惜,就像唐刘自己在公众号里说的 ——

但是,我推荐的朋友几乎全是有技术背景的人,所以当我跟一位不懂技术的朋友进行推荐的时候,我才突然意识到,我们的这款产品离好看以及好用,还有很长的路要走。

关于数据库,query,BI这档事,业界早有定论,普通人需要的是不用学习query就能够知道查询和分析的结果。而拖拽式的可视化工具,难道不是更好的答案?

好了,不扯远了。其实我们今天要谈的是如何借助类似ChatGPT这种生成式的大模型来生成Elasticsearch搜索语句,嗯,就像Chat2Query所做的一样。

生成式查询语言的需求

其实,随着数据量的增长和业务需求的不断变化,传统的查询和分析语言已经不能满足现代应用的需求。因此,越来越多的企业和技术公司开始尝试开发新的数据查询语言,或者利用人工智能等新技术提供更加智能化的数据查询解决方案。

在这方面,GPT模型作为一种先进的自然语言处理技术,能够生成领域特定的DSL表达式,使得用户可以使用更加自然、直观的方式来进行数据查询和分析。这样可以大大提高数据查询的效率和准确性,使得用户可以更加方便地从数据中获取有用的信息和洞察。因此,不少公司正在积极探索并利用这些新技术,以满足用户不断增长的需求。

其中,Copilot的出现更表明了人工智能技术在编程领域的应用越来越成熟,未来这种技术将会在软件开发领域扮演更加重要的角色。通过自动化代码生成、错误检测和调试等工作,将大大降低开发者的工作量,提高代码的质量和效率。

而ChatGPT更加加重了这一趋势和需求,因为ChatGPT的出现使生成式对话模型的应用变得更加普及化和便捷化,其火爆程度,直接把AIGC带入我们每个人的生活。

所以,如果我们对ES的DSL感到恐惧,不妨试一试现有各种AIGC工具,寻求AI的帮助,本文,我们就从Copilot和chatGPT开始。

使用AIGC编写ES的DSL


Copilot + VS Code的例子

第一个,我们先来看看​在VS code上使用Copilot来生成ES DSL的例子。

首先,我们的先注册和申请Copliot的使用账号,并且将其安装到VS code中,步骤如下:

  1. 在 VS Code 中安装 Copilot 插件。打开 VS Code,在菜单栏中选择“Extensions”选项,并搜索 Copilot 插件,点击“Install”按钮安装插件。​
  2. 注册 Copilot 账号。在安装完插件后,点击插件图标,选择“Register”选项,并按照指示填写注册信息完成注册。
  3. 配置 Copilot API 密钥。注册成功后,在 Copilot 网站上获取 API 密钥,然后在 VS Code 中点击插件图标,选择“API key”选项,将获取到的 API 密钥输入到相应的文本框中。
  4. 在 VS Code 编辑器中打开项目,并打开一个代码编辑器窗口。
  5. 输入要编写的代码段,按下快捷键(默认为 Ctrl + Shift + P),选择“Copilot: Generate Code”选项,Copilot 就会根据你的输入自动生成相应的代码。 ​

就如在下图中,我们只需要在注释中写入我们的需求,换行之后,通过tab键,就可以让Copilot为我们生成Elasticsearch的DSL​:


chatGPT + Intellij 的例子

接下来,我们再来看看在intellij上使用​chatGPT的例子。

这里,我们将借助一个叫做EDQL的工具。

EDQL是基于Intellij平台的Elasticsearch专业查询和管理工具。它用于管理 Elasticsearch 集群和从 Elasticsearch 查询数据,具有以下功能。

  1. EDQL 完全兼容官方的Query DSL,你可以直接复制Query DSL 在EDQL 上运行,无需任何额外的努力。
  2. EDQL 有一个可视化编辑器,允许您通过交互式 UI 快速编写查询条件。
  3. 拥有强大的脚本引擎:支持函数、变量、迭代等。使用Smart Intellij,您可以轻松编写查询DSL(重构、提取等)。

安装并试用:https ://github.com/chengpohi/edql/releases/tag/v1.9.16

​使用的方式和Copilot类似:

总结

​时代是在进步的,AIGC终将会带来一场不小的革命,而通过AIGC自动代码生成功能,能帮助我们提高编程效率和减少出错率。

然而,在使用过程中,我们还是需要保护好自己的隐私和知识产权,并遵守相关法律法规和道德规范。

同时,我们也需要意识到,作为一条经验法则,我们应该假设它可能会做最糟糕的事情:生成一个看起来正确、语法正确但产生错误答案的查询。​

因此,工具为我们带来​效率的同时,绝不意味着我们不再需要学习。当我们自己,停止进步的时候,或许,就会是潘多拉魔盒中厄运降临的时候

讨论这个帖子(0)垃圾回帖将一律封号处理……