Я исправил это предупреждение, переиндексировав:
systemctl stop slapd
rm /var/lib/ldap/alock
slapindex
chown -R ldap:ldap /var/lib/ldap/
systemctl start slapd
Это просто предупреждение о том, что некоторые атрибуты, используемые в фильтре для данного конкретного результата поиска, не были проиндексированы.
Имеет ли смысл индексировать атрибут или нет, можно определить, только просмотрев фильтр, вызвавший это предупреждение.
Также можно значительно снизить производительность поиска при добавлении индексов для атрибутов с большими наборами результатов для отдельного значения.
Типичный пример шаблона анти--индексации:
Предположим, что (uid=foobar)
всегда возвращает один результат поиска.
Очевидно, вы индексируете атрибут uid:
index uid eq
Теперь довольно часто используются более сложные фильтры, например. для поиска только "активных" пользователей:
(&(uid=foobar)(organizationalStatus=active))
Если у вас много пользователей, соответствующих (organizationalStatus=active)
, производительность поиска будет значительно хуже, если вы просто индексируете из-за этого неиндексированного предупреждения!
Причина в том, что для каждого индексированного атрибута генерируется набор кандидатов для поиска, и на втором этапе наборы кандидатов для поиска фильтруются с неиндексированными утверждениями. Таким образом, в приведенном выше примере index uid eq
приведет к набору кандидатов для поиска с кардинальностью, равной единице, а index uid,organizationalStatus eq
приведет к созданию двух наборов кандидатов для поиска, uid по-прежнему с кардинальностью один, но OrganizationalStatus с мощностью все .
=> Не добавляйте индекс только для того, чтобы избавиться от предупреждения без анализа используемых поисковых фильтров и возможных размеров наборов кандидатов для поиска!