假设我的Riak安装中的test
存储桶中有一个对象,其结构如下:
{
"animals": {
"dog": "woof",
"cat: "miaow",
"cow": "moo"
}
}
执行此对象的搜索请求时,搜索结果的结构如下:
{
"responseHeader": {
"status": 0,
"QTime": 3,
"params": {
"q": "animals_cow:moo",
"q.op": "or",
"filter":"",
"wt": "json"
}
},
"response": {
"numFound": 1,
"start": 0,
"maxScore": "0.353553",
"docs": [
{
"id": "test",
"index": "test",
"fields": {
"animals_cat": "miaow",
"animals_cow": "moo",
"animals_dog": "woof"
},
"props": {}
}
]
}
}
正如您所看到的,对象的存储方式,cat
,cow
和dog
键嵌套在animals
中。但是,当搜索结果返回时,没有任何键嵌套,只是由_
分隔。
我的问题是这样的: Riak是否有任何方式提供反向格式"搜索,并以正确(嵌套)格式返回对象的字段?当存储和返回可能包含_
的用户数据时,这会成为问题。
我确实看到Riak (beta release)的最新版本提供了搜索架构,但我似乎无法看到我的问题是否会得到解答。
答案 0 :(得分:0)
您在搜索结果中收到的内容是在通过json分析器后对象的样子。如果您需要格式不同的数据,则可以使用自定义分析器。但是,这只会影响新放置的数据。
对于现有数据,您可以使用id
字段并为原始对象发出get请求,或使用solr查询作为MapReduce job的输入。