# 高级语法搜索[](#高级语法搜索 "Permalink")

版本历史

*   在[GitLab Enterprise Starter](https://about.gitlab.com/pricing/) 9.2 中引入

**GitLab.com 可用性：**自 2020-07-10 起，在 GitLab.com 上启用了 Bronze 及更高版本的 Advanced Global Search（由 Elasticsearch 支持）.

使用高级查询获得更具针对性的搜索结果.

这是用户文档. 要安装和配置 Elasticsearch，请访问[管理员文档](../../integration/elasticsearch.html) .

## Overview[](#overview "Permalink")

"高级语法搜索"是" [高级全局搜索"](advanced_global_search.html)的子集，如果您想要更具体的搜索结果，可以使用它.

Advanced Global Search 仅支持搜索[默认分支](../project/repository/branches/index.html#default-branch) .

## Use cases[](#use-cases "Permalink")

例如，假设您开发的产品依赖于另一个组中托管的另一种产品的代码.

由于在您的 GitLab 实例下托管了数百个不同的项目，因此您需要搜索结果尽可能地高效. 您对要查找的内容有感觉（例如，函数名），但是同时您也不太确定.

在这种情况下，在查询中使用高级搜索语法将产生更好的结果.

## Using the Advanced Syntax Search[](#using-the-advanced-syntax-search "Permalink")

高级语法搜索支持带有前缀，布尔运算符等的模糊或精确搜索查询.

可以在[Elasticsearch 文档中](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/query-dsl-simple-query-string-query.html#_simple_query_string_syntax)找到完整的详细信息，但是这里有一个快速指南：

*   搜索以任何顺序搜索查询中的所有单词，例如：搜索`display bug`问题将以任何顺序返回匹配这两个单词的所有问题.
*   要查找确切的词组（仍然适用词干），请使用双引号： `"display bug"`
*   要查找未提及显示的错误，请使用`-` ： `bug -display`
*   要查找显示或声音中的错误，请使用`|` ： `bug display | sound` `bug display | sound`
*   要组术语一起，使用括号： `bug | (display +sound)` `bug | (display +sound)`
*   要匹配部分单词，请使用`*` ： `bug find_by_*`
*   要查找包含这些符号之一的术语，请使用`\` ： `argument \-last`

### Syntax search filters[](#syntax-search-filters "Permalink")

高级语法搜索还支持使用过滤器. 可用的过滤器是：

*   filename：按文件名过滤. 您可以使用 glob（ `*` ）运算符进行模糊匹配.
*   path：按路径过滤. 您可以使用 glob（ `*` ）运算符进行模糊匹配.
*   扩展名：按扩展名过滤文件名. 请写扩展名，不要带引号. 仅完全匹配.

要使用它们，只需将它们添加到您的查询格式`<filter_name>:<value>`没有冒号之间的空格（ `:` ）和值.

Examples:

*   查找包含任何名为`hello_world.rb`内容的文件： `* filename:hello_world.rb`
*   查找一个名为`hello_world`的文件，其中包含文本`whatever` ： `whatever filename:hello_world`
*   在扩展名为`.rb`文件中查找文本" def create"： `def create extension:rb`
*   在名为`encryption`的文件夹中的文件内查找文本`sha` ： `sha path:encryption`
*   查找任何以`hello`开头的文件，其中包含`world`并带有`.js`扩展名： `world filename:hello* extension:js`