2016-10-07 85 views
1

我使用Riak作为用Python实现的图形数据库的键 - 值存储后端。Riak搜索2无索引存储桶

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

我插入以下数据到水桶default(与斗式nodes):

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

NB:数据自动变换成地图数据类型。

我可以正确地获取数据,但我想下面的全文搜索并没有返回文档:

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

看来,我的文件不被索引。

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

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

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

回答

1

首先,您应该考虑到Riak会自动添加后缀_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"/>没有。

+0

谢谢你,的确我误读了文档,现在一切正常。 – linkdd