【问题标题】:Automatic conversion of SQL query to ElasticSearch QuerySQL 查询自动转换为 ElasticSearch 查询
【发布时间】:2015-08-03 04:49:06
【问题描述】:

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

但是,明天我们想切换到 ElasticSearch。有没有办法,我可以使用相同的 sql 查询甚至通过 ElasticSearch 进行搜索。

【问题讨论】:

标签: mysql elasticsearch


【解决方案1】:

您可能想查看这个 Elasticsearch 插件,该插件旨在在 Elasticsearch 之上提供一个 SQL 层 https://github.com/NLPchina/elasticsearch-sql

【讨论】:

    【解决方案2】:

    您可能可以制作某种解析器,但话说回来,我认为这甚至不是一个好主意,即使解析器编写得很好。您必须记住 Elasticsearch 使用倒排索引,因为它基于 Lucene。像查询关系数据库一样查询它会破坏这种逻辑,因此甚至不清楚使用 ElasticSearch 是否有任何用处,您最好坚持使用纯 SQL 查询。

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

    【讨论】:

    • 我也得出了这个结论。 es-sql 项目虽然有助于查看,但仅支持可以很好地转换为反向索引逻辑的命令。
    • 查看这个免费的 SQL 到弹性搜索在线工具 - toolsbuzz.com/query-converter
    【解决方案3】:

    在 2018 年 6 月使用 Elasticsearch 6.3 released,您可能不再需要“自动转换”。

    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-only)发行版中可用——包括“翻译”功能和 CLI 工具是完全免费的。

    【讨论】:

      猜你喜欢
      • 2018-04-07
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 2018-10-23
      • 2018-09-17
      • 2013-09-17
      • 2021-09-13
      相关资源
      最近更新 更多