2015-10-13 4 views
1

Я выполняю тест с CouchBase 4.0 и java sdk 2.2. Я вставляю 10 документов, ключи которых всегда начинаются с «190».Запрос Couchbase не видит недавно добавленные документы

После установки этих 10 документов я запрашиваю их:

cb.restore("190", cache); 
Thread.sleep(100); 
cb.restore("190", cache); 

Запрос в рамках метода 'восстановления' является:

Statement st = Select.select("meta(c).id, c.*").from(this.bucketName + " c").where(Expression.x("meta(c).id").like(Expression.s(callId + "_%"))); 
N1qlQueryResult result = bucket.query(st); 

Первый вызов для восстановления возвращает 0 документы:

Query 'SELECT meta(c).id, c.* FROM cache c WHERE meta(c).id LIKE "190_%"' --> Size = 0 

Второй звонок (100 мс позже) возвращает 10 документов:

Query 'SELECT meta(c).id, c.* FROM cache c WHERE meta(c).id LIKE "190_%"' --> Size = 10 

Я попытался добавить PersistTo.MASTER в оператор 'insert', но он не работает.

Похоже, что «вставка» не сохраняется немедленно.

Любая помощь была бы действительно оценена.

Joan.

ответ

2

Вы используете N1QL для запроса данных - и N1QL только в конечном итоге согласован (по умолчанию), поэтому он появляется только после пересчета индексов. Это не связано с тем, сохраняются или нет данные (что означает: записывается из ОЗУ на диск).

Вы можете попробовать изменить уровень scan_consitency по умолчанию - NOT_BOUNDED - чтобы получить согласованные результаты, но для возврата потребуется больше времени.

read more here

java scan_consitency options

Смежные вопросы