Я пробую индексы Cloud Datastore и не могу определить конфигурацию, которая мне нужна для разрешения моих запросов.
Я создал несколько сущностей одного типа (названных "object"), все их с 5 свойствами, названными одинаково (property_0, property_1, ..., property_4). Затем я создал составной индекс для этого вида, проиндексировал все 5 свойств и установил property_4 на последнем месте, потому что я хочу применить к нему фильтры неравенства.
Определение индекса:
indexes:
- kind: object
ancestor: no
properties:
- name: property_0
direction: asc
- name: property_1
direction: asc
- name: property_2
direction: asc
- name: property_3
direction: asc
- name: property_4
direction: asc
Запросы, которые я пытаюсь разрешить, всегда применяют фильтр неравенства к property_4, и могут быть фильтры для некоторых других свойств. Некоторые примеры:
- SELECT * FROM объекта WHERE property_4> 5 AND property_0 = true
- SELECT * FROM объекта WHERE property_4> 5 AND property_4 <10 AND property_1 = 'Approved' </li>
- SELECT * ОТ объекта WHERE property_4> 8 AND property_2 = 100 AND property_3 = true
- SELECT * FROM объекта WHERE property_4> 15 AND property_0 = true AND property_1 = 'черновик' AND property_2 = 10 AND property_3 = false
Единственный запрос, который работает, если я фильтрую каждое свойство в индексе, остальные показывают сообщение об ошибке «Ваше хранилище данных не имеет составного индекса (предоставлено разработчиком) для этого запроса. "
Разве не все запросы должны быть разрешены созданным индексом? Или мне нужно создать индекс для каждой комбинации фильтров, которые я хочу применить? (т. е. один индекс для фильтрации property_4 и property_0; другой индекс для property_4 и property_1; другой индекс для property_4, property_2 и property_3; ...)