JIRA的使用介绍(四)- 高级搜索(JQL)

JIRA的高级搜索功能超级好用,使用了自带的JQL查询语言,有点类似于SQL的语法,但是做了扩充和简化。

什么是高级搜索?

高级搜索可以让你使用结构化查询搜索JIRA问题单。搜索结果将显示在问题导航器,你可以将其导出到MS Excel等多种格式。你还可以保存和订阅你的高级搜索。
当你执行高级搜索时,你是用的是JIRA搜索语言(JQL)。JQL简单查询(也称为一个“语句”)包括一个字段,包括一个运算符、一个或多个值或功能。例如,下面的简单的查询会搜索在“XRTP2”项目中的所有问题单:

    project = "Xray Test Project Sample 2"  
Advanced search

如何执行高级搜索

  1. 选择Issues > Search for Issues将出现问题导航界面。
    • 如果有现有的搜索条件,请单击New filter按钮复位搜索条件。
    • 如果Advanced是以链接显示,点击该链接切换到高级搜索。
  2. 使用字段、运算符、字段值或函数输入查询条件。
  3. 点击Search按钮执行查询。

执行文本搜索

当在以下字段执行搜索时,可以使用Lucene的文本搜索功能的CONTAINS运算符:

  • Summary
  • Description
  • Environment
  • Comments
  • custom 字段采用“自由文本搜索器”,包括以下内置自定义字段类型:
    • Free Text Field (无限制文本)
    • Text Field (< 255字节)
    • Read-only Text Field

在JQL中使用文本字段的"some words"值搜索问题。这会搜索所有文本自定义字段如总结、描述、环境、评论。如果你有很多文本自定义字段,你可以通过搜索特定的字段来改进搜索,例如:

      Summary ~ "some words" OR Description ~ "some words"

使用自动填写功能

当你在输入查询条件时,JIRA会自动识别上下文并提供一个自动填写推荐列表。自动填写推荐列表按字母顺序排列,包括前15个匹配值。值得一提的是这个自动填写功能还可以支持模糊的匹配,输入User多种信息都会自动匹配到用户的名。自动填写推荐不提供函数参数。
image.png
  • 注意:
    如果自动填写推荐没有出现,可能是因为你的管理员关闭了JIRA实例的该功
    自动填写推荐不会出现在所有字段。点击字段参考查看那些字段支持自动填写。

在高级搜索和简单搜索之间切换

通常情况下,使用“简单搜索”创建查询可能会被转换成“高级搜索”(JQL),然后再简单查询。然而,使用“高级搜索”创建查询就不会被转换成“简单搜索”,特别是当:

  • 查询包含OR运算符(注意你可以使用IN运算符,但它将被转换,例如:project in (A, B))
    • 例:尽管(project = JRA OR project = CONF)查询等同于(project in (JRA, CONF)),但只有第二个查询会被转换
  • 查询包含NOT运算符
  • 查询包含EMPTY运算符
  • 查询包含任何!=, IS, IS NOT, >, >=, <, <=运算符
  • 查询指定相关项目中的字段和值(如版本,组成,自定义字段),并且该项目没有明确包括在查询中(如fixVersion=“4.0”,没有AND project=JRA)。这些自定义字段特别棘手,因为它们可以在一个项目/问题类型的基础上进行配置。一般的经验规则是,如果该查询不能在“简单搜索”的形式创建,那么如果使用“高级搜索”创造该查询,那么该查询将不会被转换成'简单搜索'。

设置运算符优先

你可以通过使用括号来强调JQL语句中运算符的优先级。例如,如果你想查找X项目中所有被解决的问题,以及目前被分配给系统管理员(leo)的问题。你可以在你的查询中使用括号强制执行布尔运算符的优先级,即:
(status=resolved AND project=X) OR assignee=leo
需要注意的是,如果你不使用括号,该语句将使用运算符优先级评估。你还可以使用括号来组合语句,这样就可以将NOT运算符应用于组。

如果你添加括号强制符的优先级,但他们没有严格要求的运算符优先级执行但返回相同的结果,当你保存查询时JIRA会删除你查询语句里面的优先级。

JQL的保留关键字

JQL有以下保留的字符:
Reserved characters

如果你需要在查询中作为内容来使用这些字符,就需要做如下转化:

  • 用单引号或双引号把他们包起来
  • 在前面放两个反斜杠
    举例:
  •    version = "[example]"
    
  •    summary ~ "\\[example\\]"
    

特性介绍和举例

1. WAS运算符

WAS运算符包括Was,Was in,Was not,Was not in

WAS

这个运算符可以查找当前或曾经的一个状态,例如:

    assignee WAS "leo"

这个用于查找当前或曾经分配给leo的所有问题,这个功能很实用也很强大。

2. CHANGED运算符

CHANGED运算符用于查找问题单的某个特定字段被变更过了。这个运算符有以下一些常见用法:

  • 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. 查询是否带有附件

示例:
查询带有附件的问题:

    attachments IS NOT EMPTY

查询不带附件的问题:

    attachments IS EMPTY

3. 查询包含特定文本

示例:
查找评论里包含有"My PC is quite old"的问题(模糊匹配):

   comment ~ "My PC is quite old"

查询评论里含有完整语句"My PC is quite old"的问题:

  comment ~ "\"My PC is quite old\""

4. 日期相关

查找某个特定日期前或后创建的问题(或某个日期范围)。注意,如果没有指定具体时间,默认为凌晨00:00。查询结果是根据你的JIRA服务器设置的时区。使用如下格式:

"yyyy/MM/dd HH:mm"
"yyyy-MM-dd HH:mm"
"yyyy/MM/dd"
"yyyy-MM-dd"

或者使用"w" (周), "d" (天), "h" (小时)或"m" (分钟)来指定相对于当前时间的日期。默认为“M”(分钟)。一定要使用引号(“);如果省略了引号标记,你提供的数字将被解释为纪元(1970-1-1)之后的毫秒。
注:该字段不支持自动填写功能。
支持的函数
当使用 EQUALS, NOT EQUALS, GREATER THAN, GREATER THAN EQUALS, LESS THAN 或LESS THAN EQUALS运算符时,该字段支持:

currentLogin()
lastLogin()
now()
startOfDay()
startOfWeek()
startOfMonth()
startOfYear()
endOfDay()
endOfWeek()
endOfMonth()
endOfYear()

示例
查找2010年12月12日00:00点之前创建的所有问题:

created < "2010/12/12"

查找2010年12月12日创建或2010年12月12日之前创建的所有问题:

  created <= "2010/12/13"

查找2010年12月12日下午2点之前创建的所有问题:

  created > "2010/12/12" and created < "2010/12/12 14:00"

查找创建不足一天的问题:

created > "-1d"

查找在2011年1月创建的所有问题:

created > "2011/01/01" and created < "2011/02/01"

查找在2011年1月15日创建的所有问题:

created > "2011/01/15" and created < "2011/01/16"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,924评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,902评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,716评论 0 239
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,783评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,166评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,510评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,784评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,476评论 0 196
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,196评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,459评论 2 243
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,978评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,321评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,964评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,046评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,803评论 0 193
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,530评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,420评论 2 265

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,078评论 1 44
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,016评论 8 265
  • --- layout: post title: "如果有人问你关系型数据库的原理,叫他看这篇文章(转)" date...
    蓝坠星阅读 748评论 0 3
  • 大宝的三宗罪爱哭,吃饭慢,爱顶嘴,由于这些没少挨鞭子,而且很长一段时间都是愈演愈烈,刺激的后果就是我的脾气像鞭炮,...
    红猪猪阅读 196评论 2 2
  • 第一次见你 花瓣正挂满枝头 我记住了 它的名字 花瓣落了又红 红了又落 既然是别离 为何又见紫荆花开
    懒懒的F阅读 362评论 6 9