Использовать хранилище данных (NDB), API поиска или оба для просмотра данных?
В CMS список клиентов извлекается с использованием обычного NDB-запроса с упорядочением. Чтобы разрешить фильтрацию по имени, названию компании и электронной почте, я создаю несколько (иногда много) индексов. Ситуация была не идеальной, но работоспособной.
Теперь есть (экспериментальный) API поиска. Кажется, это не имеет никакого отношения к хранилищу данных (или NDB), но мои данные уже там.
Я хотел бы использовать полнотекстовый поиск и применять фильтры к нескольким полям одновременно, поэтому я должен хранить свои данные в хранилище данных и дублировать части данных в Документах для API поиска? Или, как показывает пример поиска, полностью пропустите Datastore.
1 ответ
Я не совсем уверен, каков рекомендуемый метод для его реализации, но API поиска, похоже, предназначен для использования в основном в качестве дополнительного индекса, управляемого вручную. В большинстве ситуаций не идеально хранить все ваши данные в API поиска, так как вы можете легко уменьшить размер индексов API поиска с помощью полей, которые вам никогда не нужно фильтровать или искать, и при этом он не предназначен для использования в ситуация, когда необходимы регулярные записи.
Моя личная рекомендация - оставлять все ваши данные в NDB и разрабатывать классы для создания документов, содержащих релевантные для поиска данные, используя API-интерфейс поиска, поддерживая согласованность между двумя средами, обновляя версию API-интерфейса поиска каждый раз, когда производится запись в хранилище данных. версия (или использование задач / крон или подобной системы, если вы пишете данные много). Вы должны хранить любые данные, которые вы представляете в пользовательском интерфейсе при фильтрации в документах API поиска для этих связанных данных, так как ручное объединение результатов API поиска и данных хранилища данных неоправданно интенсивно и серьезно замедлит весь процесс.