2.7. 使用命令行创建索引以提高视图的性能


视图基于给定的过滤器从搜索结果衍生而来。过滤器的一部分是在 nsViewFilter 中明确给定的属性;过滤器的其余部分基于条目层次结构,查找视图中包含的实际条目的 entryidparentid 操作属性。

Copy to Clipboard Toggle word wrap
(|(parentid=search_base_id)(entryid=search_base_id)

如果任何搜索的属性 - entryidparentidnsViewFilter - 中的属性没有被索引,则搜索会部分未索引,并且目录服务器搜索整个目录树是否有匹配的条目。

要提高性能,请创建索引,如下所示:

  • entryid 创建等号索引 (q)。默认情况下,parentid 属性在系统索引中索引。
  • 如果 nsViewFilter 测试中的过滤器存在(attribute),则为正在测试的属性创建 存在索引 (pres)。您应该只将这个索引类型用于目录条目的次要显示的属性。
  • 如果 nsViewFilter 中的过滤器相等(attribute=value),为正在测试的属性创建 相等索引 (eq)。
  • 如果 nsViewFilter 中的过滤器测试子字符串(attribute=value*),请为正在测试的属性创建 子字符串索引 (sub)。
  • 如果 nsViewFilter 中的过滤器测试 approximation (attribute~=value),则为被测试的属性创建 大约索引 (大约)。

例如,当您使用以下视图过滤器时:

Copy to Clipboard Toggle word wrap
nsViewFilter: (&(objectClass=inetOrgPerson)(roomNumber=*66))

您应该使用 相等索引 (默认情况下为 )和 roomNumber (带有 子字符串索引)进行索引

先决条件

  • 您已了解您在视图过滤器中使用的属性。

流程

  1. 可选:列出后端以确定要索引的数据库:

    Copy to Clipboard Toggle word wrap
    # dsconf -D "cn=Directory Manager" instance_name backend suffix list
    dc=example,dc=com (userroot)

    请注意所选的数据库名称(在括号中)。

  2. 使用 dsconfig 实用程序为所选后端数据库创建索引配置。

    指定属性 name, index type, 以及可选的匹配规则来设置 collation order (OID),特别是在国际化实例时。

    Copy to Clipboard Toggle word wrap
    # dsconf -D "cn=Directory Manager" instance_name backend index add --attr roomNumber --index-type sub userroot

    对 view 过滤器中使用的每个属性重复此步骤。

  3. 重新索引数据库以应用新的索引:

    Copy to Clipboard Toggle word wrap
    # dsconf -D "cn=Directory Manager" instance_name backend index reindex userroot

验证

  1. 执行基于您在视图中使用的相同过滤器的标准目录树的搜索:

    Copy to Clipboard Toggle word wrap
    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b dc=example,dc=com (&(objectClass=inetOrgPerson)(roomNumber=*66))
    # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b dc=example,dc=com "(&(objectClass=inetOrgPerson)(roomNumber=*66))"
  2. 查看 /var/log/dirsrv/slapd-instance_name/ access 中的访问日志

    搜索的 RESULT 在详情中不应包含 note=UPartially Unindexed Filter

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.