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