Как индекс couchbase реагирует на недействительные документы для индекса и новые действительные? - PullRequest
2 голосов
/ 15 апреля 2019

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

Пример:

index a on Abucket(field) where field2='value'

При создании индекса все документы на Abucket с field2='value' будут проиндексированы.

Но что произойдет, если документ изменится field2='value2'. А потом, после изменения его обратно на value1

Как это может работать с документами, которые не имеют поля field2, я думаю, они просто не индексируются, но, опять же, если позднее поле добавляется, они автоматически индексируются?

А также может ли индекс иметь комплекс где запрос? похож на WHERE ifmissing(field2, ifnull(bla bla bla))='value2'

1 Ответ

3 голосов
/ 15 апреля 2019

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

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

Мы также поддерживаем сложные выражения для предложений WHERE в индексах.

Но если это то, куда вы направляетесь, позвольте мне посоветовать немного предостережения. Основным вариантом использования предложений WHERE в индексах является ограничение индексов определенными типами документов. Типичные предложения WHERE для индексов - это что-то вроде WHERE type = 'airport'. Если вы обнаружите, что делаете с ними что-то более сложное, я советую немного поосторожнее.

...