繁体   English   中英

将SQL查询自动转换为ElasticSearch Query

[英]Automatic conversion of SQL query to ElasticSearch Query

我有一个服务,目前在Oracle DB中存储数据。 我正在开发一个项目,我需要运行一组sql查询来获取一些聚合数据。 我想将这些查询存储在一个地方,我可以迭代,并获得所需的数据。 说,我今天有10个查询。 但是,我可以继续添加更多,而无需编写代码。

但是,明天我们要切换到ElasticSearch。 有没有办法,我可以使用相同的SQL查询来搜索甚至ElasticSearch。

您可能希望查看此Elasticsearch插件,该插件旨在提供Elasticsearch之上的SQL层https://github.com/NLPchina/elasticsearch-sql

随着Elasticsearch 6.3在2018年6月发布 ,您可能不再需要“自动转换”了。

6.3版本附带本机SQL支持! (目前仍在实验中)

你(或你认识的人)有过:

这些都是我们希望我们能够进入新的Elasticsearch SQL版本的东西

我们希望允许开发人员,数据科学家和其他熟悉SQL语言的人 - 但到目前为止还不熟悉或无法使用Elasticsearch查询语言 - 来使用Elasticsearch的速度,可伸缩性和全文功能优惠和其他人已经成长为知道和爱。

如果您刚刚开始使用此功能或Elasticsearch的强大功能,请尝试以下几点:

  • SELECT … ORDER BY SCORE() DESC能够按搜索结果的相关性进行排序
  • 通过使用MATCH运算符(例如SELECT … WHERE MATCH(fieldname, 'some text')从标记化中获取所有全文魔法
  • 使用我们的JDBC驱动程序将您喜爱的JDBC兼容工具连接到Elasticsearch
  • 通过翻译API翻译您知道的SQL查询,了解如何使用Elasticsearch DSL的全部功能

请注意,此功能在Elasticsearch和REST API的“默认”(仅限非OSS)分发中提供 - 包括“翻译”功能和CLI工具完全免费。

你可能会做一些解析器,但是我不认为这甚至是一个好主意,即使解析器编写得很好。 你必须记住Elasticsearch使用倒排索引,因为它基于Lucene。 查询它会像查询关系数据库一样打败那个逻辑,因此甚至不清楚它是否对使用ElasticSearch有任何用处,你可能更好地坚持纯SQL查询。

此外,鉴于您目前只有10个查询并且您已经计划切换到ES,我强烈建议将这10个请求调整为适当的ES查询,切换到ES,然后仅在ES逻辑中创建新请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM