你能在Riak的重复字段上创建二级索引吗?

时间:2013-04-04 16:36:20

标签: riak

考虑一个JSON对象,例如:

{
  name: 'ben',
  employer: 'The Sherwin-Williams Company',
  emails: ['ben@gmail.com', 'ben@sherwin-williams.com']
}

在MongoDB中,您可以索引电子邮件字段,以便您可以使用“ben@gmail.com”作为电子邮件找到任何对象。这在Riak有可能吗?我无法通过阅读the docs来判断。

1 个答案:

答案 0 :(得分:2)

你当然可以,但你必须手动输入索引条目。

这是Ruby中的一个例子:

require 'riak'

client = Riak::Client.new(:protocol => "pbc", :host => "127.0.0.1", :pb_port => 10047, :http_port => 10048)

ben = client['people'].get_or_new('ben')

ben.data = { :name => "ben", 
             :employer => "The Sherwin-Williams Company",
             :emails => ['ben@gmail.com', 'ben@sherwin-williams.com'] }

ben.indexes['email_bin'] << "ben@gmail.com"
ben.indexes['email_bin'] << "ben@sherwin-williams.com"

ben.store

现在,您可以通过ruby库或http://127.0.0.1:10018/buckets/people/index/email_bin/ben@gmail.com

上的网络浏览器查找

在我的系统上,它返回: {"keys":["ben"]}

我知道Java和Ruby Riak库支持添加/编辑索引条目,我将不得不检查其他人并回复你。