我正在使用弹性搜索来存储大量数据以使其可搜索,但对于配置项我还在使用HSQL DB。
是否可以完全消除HSQL DB并将我现有的Elastic搜索与Crate DB结合使用?
我尝试过的事情:
尝试使用Crate驱动程序和Crate客户端连接到我现有的Elastic搜索,但我得到了异常No handler found for action "crate_sql"
。这是否意味着我无法使用现有的ES并且必须在crateDB中使用内置的ES?
连接到crateDB弹性搜索(而不是我现有的ES)之后。我能够使用CrateDriver获得连接并运行SQL查询。但在其中一个模块中,我使用以下命令创建表:
创建表some_table_name ( id VARCHAR(256), userName VARCHAR(256), fieldName VARCHAR(256),
主键(id), 唯一的(userName,fieldName) );
......但后来我有一个例外:
io.crate.action.sql.SQLActionException:第1:28行:输入'VARCHAR'时没有可行的选择
这是否意味着我无法使用SQL语法和SQL数据类型编写create table查询?
我知道如果我使用字符串数据类型而不是varchar
它会起作用,但我现在不想更改所有这些查询。
答案 0 :(得分:2)
1)
不,您不能将现有ES节点与Crate一起使用。整个SQL分析器/规划器/执行层是在服务器端完成的,而不是客户端。事实上,板条箱客户是相当愚蠢的。
2)
您必须更改类型,并删除/更改crate不支持的任何内容。例如,不支持默认值或唯一约束(最多0.39 - 可能会在未来的支持中添加)
在你的情况下,varchar类型在Crate中无效,而你必须使用“string”。
请参阅Data Types Documentation以获取支持的数据类型列表。