我们最近发布了elastic-esql ,这是一个根据 Apache 2 许可证发布的 Ruby gem。有了这个 gem,你就可以用惯用的 Ruby 语言创建 Elastic 的ES|QL查询,然后将其用于 ES|QL 查询 API。ES|QL 允许开发人员通过查询过滤、转换和分析存储在 Elasticsearch 中的数据。它使用"管道" (| ) 来逐步处理数据。该 gem 使用 Ruby 函数,你可以将这些函数链入原始对象,以建立更复杂的查询:
ESQL:
鲁比
安装
该 gem 可通过以下方式从 RubyGems 安装:
或者将其添加到项目的 Gemfile 中:
使用方法
您可以一次性建立一个完整的查询,也可以使用from 或row 等源命令创建一个查询对象,然后使用 ES|QL 方法链在其上建立查询。
在to_s 方法中,gem 将代码转换为 ES|QL,因此在打印输出或转换为字符串时会返回 ES|QL 查询:
您可以使用! 中每个函数的对应函数来实例化查询对象并更改其初始状态:
该工具提供了将额外步骤链入 ES|QL 函数的便捷方法,如enrich 和sort 。一旦在Elastic::ESQL 对象上调用enrich ,就可以将on 和with 与之连锁:
在使用sort 之后,您还可以将desc 、asc 、nulls_first 和nulls_last 链入您的查询:
它还支持自定义字符串,以备您自己编写 ES|QL 查询或使用尚未添加到库中的功能。custom 会在查询结束时连接字符串。它将在发送到函数时添加这些字符,而不会添加任何管道字符。它们将通过一个空格字符与查询的其余部分合并。
您还可以将custom 功能串联起来:
在 Ruby 客户端使用 ES|QL 查询生成器
您可以通过发送查询对象,直接在elasticsearch-ruby和esql.query API 中使用查询生成器:
您还可以将其与 Elasticsearch Ruby 客户端中的 ES|QL Helper 结合使用,了解更多详情:
作为独立工具
该 gem 被设计为一个独立工具,用于以惯用方式构建 ES|QL 查询。它没有运行时依赖性,可以与官方 Elasticsearch Ruby 客户端一起使用,也可以单独使用。
生成的查询可在esql.query API 中使用,无论应用程序以何种方式与 Elasticsearch API 交互(无论是否使用 Ruby)。使用elastic-esql 创建查询后,生成的字符串就可以作为query 请求正文中的参数发送给应用程序接口。
我曾写过一篇关于将 Elasticsearch 与流行的 Ruby 工具结合使用的文章。该 gem 可与任何流行的 Ruby 工具一起使用,以通过 ES|QL 查询 Elasticsearch。
结论
该库正在积极开发中,最终的应用程序接口尚未完成。目前发布的是技术预览版。如果您对当前的应用程序接口或一般使用方法有任何反馈,请随时打开新问题。有关 Ruby ES|QL 查询生成器的更多信息,请参阅README。




