Я использую riak2.2.3 и пытаюсь выполнить поиск по типу сегмента карты, но ничего не возвращается.
Я настроил тип контейнера "dist_cache" на серверной части памяти:
# riak-admin bucket-type status dist_cache
dist_cache is active
active: true
allow_mult: true
backend: <<"memory_mult">>
basic_quorum: false
big_vclock: 50
chash_keyfun: {riak_core_util,chash_std_keyfun}
claimant: 'riak@127.0.0.1'
datatype: map
dvv_enabled: true
dw: quorum
last_write_wins: false
linkfun: {modfun,riak_kv_wm_link_walker,mapreduce_linkfun}
n_val: 3
notfound_ok: true
old_vclock: 86400
postcommit: []
pr: 0
precommit: []
pw: 0
r: quorum
rw: quorum
search_index: <<"expirable_token">>
small_vclock: 50
w: quorum
young_vclock: 20
Затем я включил поиск в / etc / riak /:
search = on
Затем я настроил индекс со схемой по умолчанию и связал его с типом сегмента (см. Выше).
Я могу успешно хранить и извлекать значения, используя ключи, в этом сегменте. Я сохранил 3 значения в регистрах: двоичные данные, целое число (отметка времени) и строку:
[
{{"attrs", :register}, <<131, 97, 111>>},
{{"iat_i", :register}, "1540923453"},
{{"test_s", :register}, "paul"}
]
(отображается после форматирования из оболочки Elixir с использованием библиотеки Riak Elixir.)
Однако при поиске следующих значений ничего не найдено:
iex(74)> :riakc_pb_socket.search(pid, "expirable_token", "iat_i:[0 TO *]")
{:ok, {:search_results, [], 0.0, 0}}
iex(75)> :riakc_pb_socket.search(pid, "expirable_token", "iat_i:1540923453")
{:ok, {:search_results, [], 0.0, 0}}
iex(76)> :riakc_pb_socket.search(pid, "expirable_token", "test_s:paul")
{:ok, {:search_results, [], 0.0, 0}}
iex(77)> :riakc_pb_socket.search(pid, "expirable_token", "test_s:*")
{:ok, {:search_results, [], 0.0, 0}}
Кроме того, /var/log/riak/solr.log не показывает сообщений об ошибках для этих запросов.
Я что-то упустил?
Мне нужно было удалить несколько опций из опций запуска java, но теперь кажется, что java запущен и работает, и solr.log выдает сообщение об ошибке при попытке искаженного запроса.
EDIT:
После попытки решения @ vempo:
Я добавил суффикс к полю _register, но он все равно не работает. Вот как выглядит поле:
iex(12)> APISexAuthBearerCacheRiak.get("ddd", opts)
[
{{"attrs", :register}, <<131, 98, 0, 0, 1, 188>>},
{{"iat_i", :register}, "1542217847"},
{{"test_flag", :flag}, true},
{{"test_register", :register}, "pierre"}
]
но поисковый запрос по-прежнему не дает результата:
iex(15)> :riakc_pb_socket.search(pid, "expirable_token", "test_register:*")
{:ok, {:search_results, [], 0.0, 0}}
iex(16)> :riakc_pb_socket.search(pid, "expirable_token", "test_register:pierre")
{:ok, {:search_results, [], 0.0, 0}}
iex(17)> :riakc_pb_socket.search(pid, "expirable_token", "test_register:*")
{:ok, {:search_results, [], 0.0, 0}}
iex(18)> :riakc_pb_socket.search(pid, "expirable_token", "test_flag:true")
{:ok, {:search_results, [], 0.0, 0}}
iex(19)> :riakc_pb_socket.search(pid, "expirable_token", "test_flag:*")
Все еще знаете вывод в /var/log/riak/solr.log, и индекс кажется правильно настроенным:
iex(14)> :riakc_pb_socket.list_search_indexes(pid)
{:ok,
[
[index: "expirable_token", schema: "_yz_default", n_val: 3],
[index: "famous", schema: "_yz_default", n_val: 3]
]}