В результате проведенных мною тестов создается впечатление, что это конкретно большие документы (~ 2 МБ), и когда запрос использует определенные индексы (в моем случае индекс массива).
Кажется, что все работает нормально, когда документменьше.
Это происходит либо на панели управления Couchbase, либо в cbq, либо в scala SDK, который я использую.
Я использую Couchbase 4.6.0 с Индексы, оптимизированные для памяти .
У меня есть следующие индексы, относящиеся к этому запросу:
CREATE INDEX `cache_partial_specific`
ON `content`(`docType`,`entityType`,`entityId`)
WHERE (`docType` = "feedCachePartial") WITH { "defer_build"=true }
CREATE INDEX `feed_cache_partial_meta`
ON `content`(`meta().id`)
WHERE (`docType` = `feedCachePartial`)
CREATE INDEX `cache_partial_index`
ON `content`((distinct (array (`url`.`id`) for `url` in `urls` end)))
WHERE (`docType` = "feedCachePartial") WITH { "defer_build"=true }
Последний вызывает проблемы
Проблема:
Например, при запуске
SELECT * FROM content WHERE meta().id = 'cached:topic:297:grp:all'
или
SELECT * FROM content WHERE docType='feedCachePartial' AND entityId=297 and entityType='topic'
он возвращает документы, и я вижу URL 13319 в списке или URL-адресах.
Но при работе
SELECT * FROM content
WHERE docType='feedCachePartial'
AND ANY url IN urls SATISFIES url.id = 13119 END
или любой вариации с условием ANY url IN urls SATISFIES url.id = 13119
документ cached:topic:297:grp:all
не возвращается.
max_indexer_doc_size
установлен на 20 МБ, поэтому я считаю, что это не проблема (и в любом случае он возвращается при использовании других индексов).
При просмотре журнала запросов я вижу, что этот конкретный индекс, который я использую, имеет 1 реплику (у меня всего 3 узла индекса в этом кластере).
Я бы исследовалэтот индекс и посмотреть, какие документы изменить размер индекса, но я не знаю, как это сделать.