我正在使用 Riak 作为以 Python 实现的图形数据库的键值存储后端。
我创建了一个自定义 search schema命名为 nodes
。
我创建并激活了一个桶类型 nodes
,其中 search_index
属性设置为 nodes
并且 datatype
属性设置为 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
,但我得到了相同的结果。
参数search
在配置文件(/etc/riak/riak.conf
)中设置为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"/>
没有。
关于python - Riak Search 2 没有索引桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39920110/