December 26, 2020

Bitrix использование фасетных индексов в собственных запросах GetList

У битрикс есть такая клевая штука как фасетные индексы. Используются для оптимизации сложных выборок из базы, как заявляют сами битриксойды — производительность запросов увеличивается аж в 30 раз!

Документации по ним в сети с гулькин хуй. Пришлось ковырять код.

Как оказалось, если настроены фасетные индексы, то они автоматом подключаются к запросам CIBlockElement::GetList. Но если бы все оказалось так просто, то я не стал бы писать эту статью.

Что бы заработали фасетные индексы в ваших запросах в параметры вызова arFilter метода CIBlockElement::GetList нужно обязательно добавить следующее:

  • IBLOCK_ID — Обязательно должен быть 1
  • SECTION_ID — Обязательно указан именно 1 элемент
  • Свойства, которые участвуют в фасетном индексе (в настройках свойства стоит галочка «Показывать в умном фильтре»). И сука, не просто код свойства, а именно его ID! …