JIRA的高级搜索功能超级好用,使用了自带的JQL查询语言,有点类似于SQL的语法,但是做了扩充和简化。
什么是高级搜索?
高级搜索可以让你使用结构化查询搜索JIRA问题单。搜索结果将显示在问题导航器,你可以将其导出到MS Excel等多种格式。你还可以保存和订阅你的高级搜索。
当你执行高级搜索时,你是用的是JIRA搜索语言(JQL)。JQL简单查询(也称为一个“语句”)包括一个字段,包括一个运算符、一个或多个值或功能。例如,下面的简单的查询会搜索在“XRTP2”项目中的所有问题单:
project = "Xray Test Project Sample 2"
Advanced search
如何执行高级搜索
选择Issues > Search for Issues将出现问题导航界面。
如果有现有的搜索条件,请单击New filter按钮复位搜索条件。
如果Advanced是以链接显示,点击该链接切换到高级搜索。
使用字段、运算符、字段值或函数输入查询条件。
点击Search按钮执行查询。
执行文本搜索
当在以下字段执行搜索时,可以使用Lucene的文本搜索功能的CONTAINS运算符:
Summary
Description
Environment
Comments
custom 字段采用“自由文本搜索器”,包括以下内置自定义字段类型:
Free Text Field (无限制文本)
Text Field (<255字节)
Read-only Text Field
在JQL中使用文本字段的"some words"值搜索问题。这会搜索所有文本自定义字段如总结、描述、环境、评论。如果你有很多文本自定义字段&#xff0c;你可以通过搜索特定的字段来改进搜索&#xff0c;例如&#xff1a;
Summary ~ "some words" OR Description ~ "some words"
使用自动填写功能
当你在输入查询条件时&#xff0c;JIRA会自动识别上下文并提供一个自动填写推荐列表。自动填写推荐列表按字母顺序排列&#xff0c;包括前15个匹配值。值得一提的是这个自动填写功能还可以支持模糊的匹配&#xff0c;输入User多种信息都会自动匹配到用户的名。自动填写推荐不提供函数参数。
image.png
注意&#xff1a;
如果自动填写推荐没有出现&#xff0c;可能是因为你的管理员关闭了JIRA实例的该功
自动填写推荐不会出现在所有字段。点击字段参考查看那些字段支持自动填写。
在高级搜索和简单搜索之间切换
通常情况下&#xff0c;使用“简单搜索”创建查询可能会被转换成“高级搜索”(JQL)&#xff0c;然后再简单查询。然而&#xff0c;使用“高级搜索”创建查询就不会被转换成“简单搜索”&#xff0c;特别是当&#xff1a;
查询包含OR运算符(注意你可以使用IN运算符&#xff0c;但它将被转换&#xff0c;例如&#xff1a;project in (A, B))
例&#xff1a;尽管(project &#61; JRA OR project &#61; CONF)查询等同于(project in (JRA, CONF))&#xff0c;但只有第二个查询会被转换
查询包含NOT运算符
查询包含EMPTY运算符
查询包含任何!&#61;, IS, IS NOT, >, >&#61;,
查询指定相关项目中的字段和值(如版本&#xff0c;组成&#xff0c;自定义字段)&#xff0c;并且该项目没有明确包括在查询中(如fixVersion&#61;“4.0”&#xff0c;没有AND project&#61;JRA)。这些自定义字段特别棘手&#xff0c;因为它们可以在一个项目/问题类型的基础上进行配置。一般的经验规则是&#xff0c;如果该查询不能在“简单搜索”的形式创建&#xff0c;那么如果使用“高级搜索”创造该查询&#xff0c;那么该查询将不会被转换成&#39;简单搜索&#39;。
设置运算符优先
你可以通过使用括号来强调JQL语句中运算符的优先级。例如&#xff0c;如果你想查找X项目中所有被解决的问题&#xff0c;以及目前被分配给系统管理员(leo)的问题。你可以在你的查询中使用括号强制执行布尔运算符的优先级&#xff0c;即&#xff1a;
(status&#61;resolved AND project&#61;X) OR assignee&#61;leo
需要注意的是&#xff0c;如果你不使用括号&#xff0c;该语句将使用运算符优先级评估。你还可以使用括号来组合语句&#xff0c;这样就可以将NOT运算符应用于组。
如果你添加括号强制符的优先级&#xff0c;但他们没有严格要求的运算符优先级执行但返回相同的结果&#xff0c;当你保存查询时JIRA会删除你查询语句里面的优先级。
JQL的保留关键字
JQL有以下保留的字符&#xff1a;
Reserved characters
如果你需要在查询中作为内容来使用这些字符&#xff0c;就需要做如下转化:
用单引号或双引号把他们包起来
在前面放两个反斜杠
举例:
version &#61; "[example]"
summary ~ "\\[example\\]"
特性介绍和举例
1. WAS运算符
WAS运算符包括Was&#xff0c;Was in&#xff0c;Was not&#xff0c;Was not in
WAS
这个运算符可以查找当前或曾经的一个状态&#xff0c;例如&#xff1a;
assignee WAS "leo"
这个用于查找当前或曾经分配给leo的所有问题&#xff0c;这个功能很实用也很强大。
2. CHANGED运算符
CHANGED运算符用于查找问题单的某个特定字段被变更过了。这个运算符有以下一些常见用法&#xff1a;
AFTER "date"
BEFORE "date"
BY "username"
DURING ("date1","date2")
ON "date"
FROM "oldvalue"
TO "newvalue"
备注: CHANGED运算符常被用于Assignee, Fix Version, Priority, Reporter, Resolution, and Status这些字段。
举例
assignee CHANGED
status CHANGED FROM "In Progress" TO "Open"
priority CHANGED BY freddo BEFORE endOfWeek() AFTER startOfWeek()
2. 查询是否带有附件
示例&#xff1a;
查询带有附件的问题&#xff1a;
attachments IS NOT EMPTY
查询不带附件的问题&#xff1a;
attachments IS EMPTY
3. 查询包含特定文本
示例&#xff1a;
查找评论里包含有"My PC is quite old"的问题(模糊匹配)&#xff1a;
comment ~ "My PC is quite old"
查询评论里含有完整语句"My PC is quite old"的问题&#xff1a;
comment ~ "\"My PC is quite old\""
4. 日期相关
查找某个特定日期前或后创建的问题(或某个日期范围)。注意&#xff0c;如果没有指定具体时间&#xff0c;默认为凌晨00:00。查询结果是根据你的JIRA服务器设置的时区。使用如下格式&#xff1a;
"yyyy/MM/dd HH:mm"
"yyyy-MM-dd HH:mm"
"yyyy/MM/dd"
"yyyy-MM-dd"
或者使用"w" (周), "d" (天), "h" (小时)或"m" (分钟)来指定相对于当前时间的日期。默认为“M”(分钟)。一定要使用引号(“);如果省略了引号标记&#xff0c;你提供的数字将被解释为纪元(1970-1-1)之后的毫秒。
注&#xff1a;该字段不支持自动填写功能。
支持的函数
当使用 EQUALS, NOT EQUALS, GREATER THAN, GREATER THAN EQUALS, LESS THAN 或LESS THAN EQUALS运算符时&#xff0c;该字段支持&#xff1a;
currentLogin()
lastLogin()
now()
startOfDay()
startOfWeek()
startOfMonth()
startOfYear()
endOfDay()
endOfWeek()
endOfMonth()
endOfYear()
示例&#xff1a;
查找2010年12月12日00:00点之前创建的所有问题&#xff1a;
created <"2010/12/12"
查找2010年12月12日创建或2010年12月12日之前创建的所有问题&#xff1a;
created <&#61; "2010/12/13"
查找2010年12月12日下午2点之前创建的所有问题&#xff1a;
created > "2010/12/12" and created <"2010/12/12 14:00"
查找创建不足一天的问题&#xff1a;
created > "-1d"
查找在2011年1月创建的所有问题&#xff1a;
created > "2011/01/01" and created <"2011/02/01"
查找在2011年1月15日创建的所有问题&#xff1a;
created > "2011/01/15" and created <"2011/01/16"