Как я могу создать индексы для разных комбинаций полей в Firestore?
Предположим, у меня есть users
Коллекция, которую я хочу отфильтровать на моей странице. Поля для фильтрации name
, age
, location
,
По этой причине я создаю составной индекс (имя, возраст, местоположение). Проблема в том, что я хочу иметь возможность фильтровать по любой комбинации 3 - имя и возраст, имя и местоположение, возраст и местоположение. Когда я пытаюсь это сделать, мне предлагается создать другой составной индекс для используемой комбинации полей.
Мой вопрос - означает ли это, что я должен добавить индексы для всех возможных составных комбинаций? Если да, как я могу это сделать, если я хочу фильтровать по 10 полям, а не только по 3? Нужно ли самому создавать индексы для всех комбинаций?
1 ответ
Да, вам придется создавать каждую комбинацию самостоятельно. Возможно, проще всего использовать интерфейс командной строки Firebase для развертывания индексов на основе файла JSON, который вы создаете и управляете (и, возможно, храните в системе контроля версий). Вы даже можете написать некоторый код для генерации этого файла, чтобы вам не приходилось вручную создавать каждую комбинацию.
Если вы используете несколько предложений равенства (==) для запросов, вы можете воспользоваться объединением индексов. Cloud Firestore может повторно использовать существующие индексы. В вашем случае у вас есть 3 столбца имя, возраст и местоположение, и вы хотите упорядочить по сердцам, а затем создать три индекса, как это:
Collection Fields indexed
users ↑ name, ↑ hearts
users ↑ age, ↑ hearts
users ↑ location, ↑ hearts
Теперь вы можете создавать различные запросы с комбинацией имени, возраста и местоположения, используя предложения множественного равенства (==).
Вы можете обратиться к документации Firestore о слиянии индексов здесь