Erlang Riak数据类型和搜索

Erlang Riak数据类型和搜索,erlang,riak,riak-search,Erlang,Riak,Riak Search,我使用的是Riak 2.0.2和Riak Erlang Client 2.0.0。文档建议“查询时首选搜索”,如下所示: 一般来说,你应该考虑搜索是默认的选择。 几乎所有的查询需求都超出了基本的CRUD/KV操作。如果 您的用例需要某种查询机制,您处于 如果你不知道该用什么,你应该假设搜索是正确的 给你的工具 有大量关于如何使用Riak数据类型、设置bucket类型、创建搜索索引等的文档。我希望看到riak客户的例子,但我发现没有 我尝试以下路径 创建既使用Riak数据类型又包含搜索索引的buc

我使用的是Riak 2.0.2和Riak Erlang Client 2.0.0。文档建议“查询时首选搜索”,如下所示:

一般来说,你应该考虑搜索是默认的选择。 几乎所有的查询需求都超出了基本的CRUD/KV操作。如果 您的用例需要某种查询机制,您处于 如果你不知道该用什么,你应该假设搜索是正确的 给你的工具

有大量关于如何使用Riak数据类型、设置bucket类型、创建搜索索引等的文档。我希望看到riak客户的例子,但我发现没有

我尝试以下路径

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

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).

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

计数器和其他数据类型不会通过riakc_obj进行操作。请参阅此处的文档页面,并选择示例上的“Erlang”选项卡。

我被Erlang客户机中的计数器/集合/映射所困扰,它们是不透明的数据结构,在您对操作进行修改时收集操作。稍后我们将把数据结构与bucket类型、bucket和key相关联。part。那我们怎么把它存到桶里呢?谢谢您的回复。我终于在上面的链接中找到了
riakc\u pb\u socket:update\u type/4,5
。如果在网站上也提到,会很有帮助
{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]).
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)).