Couchbase: запросы к Nickel с использованием индексов, но индексы не обновляются сразу

У меня возникла проблема. Я запрашиваю Couchbase с помощью Nickel, и мой запрос

SELECT  *        
FROM `user`
USE INDEX (ord_ts_new_idx USING GSI)
WHERE META(`user`).id LIKE 'ord::27::%'
ORDER BY ts DESC
OFFSET 0 LIMIT 5;

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

Запрос, который я использовал для создания ИНДЕКС, таков:

CREATE INDEX ord_ts_new_idx ON `user-account`(`ts`) USING GSI;

где ts это TimeStamp.

Не могли бы вы сказать мне, есть ли способ, которым я могу всегда получать обновленные данные?

Заранее спасибо. Любая помощь приветствуется.


person Shiv4nsh    schedule 07.10.2015    source источник


Ответы (1)


Вы не указываете, какой SDK вы используете, но клиентский SDK вы используете? N1QL предоставляет параметр scan_consistency, поэтому необходимо убедиться, что ваш клиентский SDK использует его. Итак, перейдите здесь и выберите нужный язык. Например, вот раздел Java SDK, смотри в разделе "прочитай свою запись".

Просто имейте в виду, что, делая это для всего, вы вполне можете получить штраф за производительность, так как индекс необходимо будет обновить, прежде чем показывать ваши результаты. Поэтому убедитесь, что вы протестировали это, пожалуйста.

person Kirk    schedule 07.10.2015
comment
Да, я уже пробовал это, но каждый раз, когда я запускаю этот запрос, у меня возникает исключение тайм-аута. Я проверил это, увеличив время ожидания до 500 секунд, но все равно не работает. - person Shiv4nsh; 08.10.2015