Riak Search 2 没有索引桶

Riak Search 2 not indexing bucket

我正在使用 Riak 作为在 Python 中实现的图形数据库的键值存储后端。

我创建了一个名为 nodes 的自定义 search schema。 我创建并激活了一个存储桶类型 nodes,其中 search_index 属性 设置为 nodesdatatype 属性 设置为 map .

我将以下数据插入存储桶 default(存储桶类型为 nodes):

key: node1
value: {
    "type_set": {"n1"},
    "foo_set": {"bar", "baz"}
}

注意: 数据自动转换为 Map 数据类型。

我可以正确获取数据,但我尝试了以下全文搜索,但没有返回任何文档:

type_set:n1
type_set:*n1*
type_set:*
foo_set:*
_yz_rk:node1
_yz_rk:*

我的文档似乎没有索引。

我也尝试在存储桶 default 上将 search_type 属性 设置为 nodes,但我得到了相同的结果。

在配置文件(/etc/riak/riak.conf)中将参数search设置为on,并安装了OpenJDK 7

我不知道我做错了什么,如果有人能帮助我,在此先感谢。

首先,您应该考虑到 Riak 会自动添加后缀 _set,这样您就不必命名 type_set,而是 type。否则你将不得不查询 type_set_set:* 而不是 type_set:*.

其次,根据 Data Type Schemas,嵌入式模式(相对于顶级模式)必须使用动态字段。显然,Riak 在字段名称前添加了一些顶级映射的内部标识符。不幸的是,这也意味着您不能在不索引另一组的情况下索引一组。

我已经 运行 进行了一些测试,发现 <dynamicField name="*_set" type="string" indexed="true" stored="true" multiValued="true"/> 可以正常工作,而 <dynamicField name="*type_set" type="string" indexed="true" stored="true" multiValued="true"/> 则不能。