Riak специальные символы в ключах - PullRequest
4 голосов
/ 20 марта 2012

Я хочу сохранить ключ со специальным символом (в моем случае - косой чертой) для Riak через REST.

HowTo http://wiki.basho.com/Riak-Search---Querying.html#Fields говорит:

Если ваше поле содержит специальные символы, такие как (‘+’, ‘-’, ‘/’, ‘[’, ‘]’, ‘(’, ‘)’, ‘:’ или наоборот), затем либо окружите фразу в одинарных кавычках или экранируйте каждый специальный символ обратная косая черта.

Но это касается полей, а не ключей. Я попытался сделать обратную косую черту, но, к сожалению, это не сработало.

Я не смог найти никакой информации по этому вопросу. Кто-нибудь знает, как замаскировать специальные символы в ключах ?

Пример (не работает):

PUT https://riak:8069/buckets/key/keys/11111\/2

где ключ 11111/2

1 Ответ

6 голосов
/ 20 марта 2012

Это не имеет ничего общего с Riak, а скорее с тем, что вам нужно экранировать URL-адреса, чтобы сервер (включая Riak) не интерпретировал косую черту как разделитель пути:

PUT https://riak:8069/buckets/key/keys/11111%2F2

Затем вы можетеполучить его таким же образом:

GET https://riak:8069/riak/key/11111%2F2

%2F - это значение для / при использовании Кодировка URL - если ваши ключи содержат символы, которые в URL-адресах считаются специальными символами, вынужно сделать это с вашими ключами.

Вы можете убедиться, что это работает правильно в Riak, перечислив ключи в вашем key контейнере (на тестовом сервере - не делайте этого на рабочем сервере, поскольку это очень дорого):

GET https://riak:8069/riak/key?keys=true

В конце вывода JSON вы найдете:

... "keys":[...,"11111/2",...]} 
...