Crate DB异常,在输入' VARCHAR'

时间:2014-06-29 16:17:35

标签: crate

我正在使用弹性搜索来存储大量数据以使其可搜索,但对于配置项我还在使用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),    唯一的(userName,fieldName) );

  3. ......但后来我有一个例外:

      

    io.crate.action.sql.SQLActionException:第1:28行:输入'VARCHAR'时没有可行的选择

    这是否意味着我无法使用SQL语法和SQL数据类型编写create table查询?

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

1 个答案:

答案 0 :(得分:2)

1)

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

2)

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

在你的情况下,varchar类型在Crate中无效,而你必须使用“string”。

请参阅Data Types Documentation以获取支持的数据类型列表。