使用PHP Riak Client,我如何同时搜索两个索引的值?

时间:2014-04-14 13:57:37

标签: php riak

我在Riak中有一个数据集,其中不同的项目已编入索引(使用index_bin)。我如何在单个请求中搜索其中两个索引具有特定值的对象?示例:gender,last_name,gender = male,last_name = Smith

我会使用Map / Reduce吗?如果是这样,任何示例代码?

1 个答案:

答案 0 :(得分:1)

Riak中二级索引的限制是一次只能搜索一个索引。因此,您将无法直接组合索引。

由于索引数据存储在记录的元数据中,您可以创建一个mapreduce作业,该作业将一个2i查询作为输入,并具有基于元数据过滤另一个的映射阶段。然而,使用mapreduce可能会非常慢且效率低,因为需要从磁盘读取传递到映射阶段函数的所有数据。

如果您希望提供相当普遍且可预测的请求,则可以始终创建和使用复合索引。你可以,例如创建一个名为gender_name_bin的索引,其值可能为male_Smith。只要第一部分是固定的,这将允许您对索引的最后部分进行范围查询,这提供了一些灵活性。

在最近的版本中,还可以基于正则表达式过滤辅助索引值,这不需要加载实际对象。有关此内容的更多信息,请访问here