极狐GitLab 高级搜索

移动到专业版于 13.9 版本。

高级搜索使用 Elasticsearch 在整个极狐GitLab 实例中进行更快、更高级的搜索。

在以下位置搜索时使用高级搜索:

  • 项目
  • 议题
  • 合并请求
  • 里程碑
  • 用户
  • 史诗(仅在群组中搜索时)
  • 代码
  • 评论
  • 提交
  • Wiki(除了群组 wikis

高级搜索在各种情况下都很有用:

  • 更快的搜索: 高级搜索基于 Elasticsearch,这是一个专门构建的全文搜索引擎,可以水平缩放,因此在大多数情况下它可以在 1-2 秒内提供搜索结果。
  • 代码维护: 在整个实例中查找需要一次更新的所有代码,可以节省维护代码所花费的时间。这对于拥有超过 10 个活动项目的组织特别有用。这也有助于在代码重构时识别未知影响。
  • 提升内部溯源: 您的公司可能由许多不同的开发团队组成,每个团队都有自己负责托管各种项目的群组。您的一些应用程序可能相互连接,因此您的开发人员需要立即搜索整个极狐GitLab 实例并找到他们要搜索的代码。

配置高级搜索

对于私有化部署实例,管理员必须配置 Elasticsearch 集成。

在 SaaS 上,高级搜索已启用。

高级搜索语法

请参阅有关高级搜索语法的文档。

按议题或合并请求 ID 搜索

您可以通过带有特殊前缀的 ID 搜索特定议题或合并请求。

  • 要按议题 ID 搜索,请使用前缀 #,后跟议题 ID。例如,#23456
  • 要按合并请求 ID 搜索,请使用前缀 !,后跟合并请求 ID。例如 !23456

全局搜索范围

引入于 14.3 版本。

要提高实例全局搜索的性能,您可以限制搜索范围。为此,您可以通过禁用 ops 功能标志来排除全局搜索范围。

全局搜索在 SaaS 和私有化部署实例中默认启用所有范围。极狐GitLab 管理员可以禁用以下 ops 功能标志,限制实例的全局搜索范围并优化其性能:

范围 功能标志 描述
代码 global_search_code_tab 启用后,全局搜索会将代码作为搜索的一部分。
提交 global_search_commits_tab 启用后,全局搜索会将提交作为搜索的一部分。
议题 global_search_issues_tab 启用后,全局搜索会将议题作为搜索的一部分。
合并请求 global_search_merge_requests_tab 启用后,全局搜索将合并请求作为搜索的一部分。
用户 global_search_users_tab 启用后,全局搜索会将用户作为搜索的一部分。
Wiki global_search_wiki_tab 启用后,全局搜索会将 wiki 作为搜索的一部分。群组 wiki 不包括在内。

全局搜索验证

为防止滥用搜索,例如可能导致分布式拒绝服务 (DDoS) 的搜索,全局搜索会根据以下条件忽略、记录并且不返回任何被视为滥用的搜索结果:

  • 搜索少于 2 个字符。
  • 搜索任何超过 100 个字符的词。URL 搜索词最多包含 200 个字符。
  • 使用停止词作为唯一搜索词进行搜索(例如,“the”、“and”、“if” 等)。
  • 使用不完全数字的 group_idproject_id 参数进行搜索。
  • 使用包含 Git refname 不允许的特殊字符的 repository_refproject_ref 参数进行搜索。
  • 使用未知的 scope 进行搜索。

不符合下述标准的搜索不会被记录为滥用,但会被标记为错误:

  • 搜索超过 4096 个字符。
  • 搜索超过 64 个字词。