Riak 数据类型和搜索



我正在使用Riak 2.0.2和Riak-Erlang-Client 2.0.0 文档建议"搜索是查询的首选",这里是完整的摘录:

通常,您应该将搜索视为 几乎所有超出基本 CRUD/KV 操作的查询需求。如果 您的用例需要某种查询机制,而您处于 对使用什么有疑问,你应该假设搜索是正确的 工具适合您。

有大量关于如何使用 Riak 数据类型、设置存储桶类型、创建搜索索引等的文档。我希望在 http://docs.basho.com/riak/latest/dev/search/search-data-types/上看到 riak 客户端示例,但我没有找到。

我尝试以下路径。

创建既使用 Riak 数据类型又包含搜索索引的存储桶类型

riak-admin bucket-type create counters '{"props":{"datatype":"counter"}}' 
riak-admin bucket-type activate counters
curl -XPUT $RIAK_HOST/search/index/scores 
  -H 'Content-Type: application/json' 
  -d '{"schema":"_yz_default"}'
riak-admin bucket-type update counters '{"props":{"search_index":"scores"}}'

在应用中使用的代码。

Counter = riakc_counter:new().
ChristopherHitchensCounter = riakc_counter:increment(5, Counter).
{ok, Pid} = riakc_pb_socket:start("127.0.0.1",8087).
ChristopherHitchens = riakc_obj:new({<<"counters">>, <<"people">>}, <<"christopher_hitchens">>,
    ChristopherHitchensCounter,
    "application/riak_counter"),
riakc_pb_socket:put(Pid, ChristopherHitchens).

在这一点上,我希望我可以使用查询一些计数器

{ok, Results} = riakc_pb_socket:search(Pid, <<"scores">>, <<"counter:[* TO 15]">>),
io:fwrite("~p~n", [Results]),
Docs = Results#search_results.docs,
io:fwrite("~p~n", [Docs]).

但它似乎不起作用。任何这方面的指南将不胜感激。

谢谢。

更新

如果有人偶然发现类似的问题(直到 Riak 文档包含 http://docs.basho.com/riak/latest/dev/search/search-data-types/上的 erlang 客户端示例(,riak邮件列表中的家伙提供了指向 riak 测试套件的链接,事实证明riakc_pb_socket:update_type/4是关联 riak 数据类型所需的方法。我将以前使用的代码修改为:

Counter = riakc_counter:new().
ChristopherHitchensCounter = riakc_counter:increment(5, Counter).
{ok, Pid} = riakc_pb_socket:start("127.0.0.1",8087).
riakc_pb_socket:update_type(Pid,{<<"counters">>,<<"people">>},<<"christopher_hitchens">>,riakc_counter:to_op(ChristopherHitchensCounter)).

现在我可以对我的索引执行搜索查询:)

计数器

和其他数据类型不是通过riakc_obj操作的。 请参阅此处的文档页面 http://docs.basho.com/riak/latest/dev/using/data-types/并选择示例的"Erlang"选项卡。

最新更新