我有一项服务,目前在Oracle DB中存储数据。 我正在开发一个项目,我需要运行一组sql查询来获取一些聚合数据。我想将这些查询存储在一个地方,我可以迭代,并获得所需的数据。 说,我今天有10个查询。但是,我可以继续添加更多内容,而无需编写代码。
但是,明天我们要切换到ElasticSearch。有没有办法,我可以使用相同的SQL查询来搜索甚至ElasticSearch。
答案 0 :(得分:3)
您可能希望查看此Elasticsearch插件,该插件旨在在Elasticsearch之上提供SQL层 https://github.com/NLPchina/elasticsearch-sql
答案 1 :(得分:1)
2018年6月Elasticsearch 6.3 released,您可能不再需要“自动转换”了。
6.3版本附带本机SQL支持! (目前仍在试验中)
你(或你认识的人)曾经:
- 说“I know how to do this thing in a SQL statement -- how do I do the same thing in Elasticsearch?”
- 尝试在关键数据库之类的SQL引擎上使用tokenization,stemming,synonyms,relevance sorting构建全文搜索?
- 试图将传统数据库扩展到数十亿行?
- 尝试将BI系统等第三方工具连接到Elasticsearch?
我们希望这些内容能够进入我们的新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工具完全免费。
答案 2 :(得分:0)
你可能会做一些解析器,但是我再也不认为这是一个好主意,即使解析器编写得很好。你必须记住Elasticsearch使用倒排索引,因为它基于Lucene。查询它会像查询关系数据库一样打败那个逻辑,因此它甚至不清楚是否可以使用ElasticSearch,你可能更好地坚持纯SQL查询。
另外,鉴于您目前只有10个查询并且您已经计划切换到ES,我强烈建议将这10个请求调整为正确的ES查询,切换到ES,然后仅在其中创建新请求ES逻辑。