0

我正在使用弹性搜索来存储大量数据以使其可搜索,但对于配置项,我仍在使用 HSQL DB。

是否可以完全消除 HSQL DB 并将我现有的 Elastic 搜索与 Crate DB 结合使用?

我尝试过的事情:

  1. 尝试使用 Crate 驱动程序和 Crate 客户端连接到我现有的 Elastic 搜索,但出现异常No handler found for action "crate_sql"。这是否意味着我不能使用我现有的 ES 并且必须在 crateDB 中使用内置的 ES?

  2. 在连接到 crateDB 弹性搜索(而不是我现有的 ES)之后。我能够使用 CrateDriver 获得连接并运行 SQL 查询。但是在其中一个模块中,我正在使用以下命令创建表:

    创建表 some_table_name ( id VARCHAR(256), userName VARCHAR(256), fieldName VARCHAR(256),

    主键(id),唯一(用户名,字段名));

...但后来我遇到了一个例外:

io.crate.action.sql.SQLActionException:第 1:28 行:输入“VARCHAR”没有可行的替代方案

这是否意味着我不能使用 SQL 语法和 SQL 数据类型编写创建表查询?

我知道如果我使用字符串数据类型而不是 ,它会起作用varchar,但我现在不想更改所有这些查询。

4

1 回答 1

3

1)

不,您不能将现有的 ES 节点与 Crate 一起使用。整个 SQL 分析器/规划器/执行层是在服务器端完成的,而不是在客户端。事实上,板条箱客户相当愚蠢。

2)

您必须更改类型并删除/更改 crate 不支持的任何内容。例如,不支持默认值或唯一约束(最高 0.39 - 将来可能会添加支持)

在您的情况下,varchar 类型在 Crate 中无效,而是您必须使用“字符串”。

有关支持的数据类型的列表,请参阅数据类型文档

于 2014-06-30T19:21:53.560 回答