Skip to main content

JQL Keywords

Argon automatically indexes issue metadata and exposes it as searchable JQL keywords. These keywords can be used directly in JQL queries without any special syntax or function calls.

How Indexing Works

Argon maintains a real-time index of issue relationships and metadata:

  1. Event-Driven Updates: When issues are created, updated, linked, or deleted, Argon's event listeners capture the changes
  2. Indexed Storage: Metadata is stored and indexed on each issue
  3. Automatic Indexing: Jira automatically indexes these values, making them searchable via JQL
  4. Near Real-Time: Updates typically appear in search results within seconds

What Gets Indexed

Data TypeTrigger Events
Link countsIssue linked, unlinked
Linked issue metadataLinked issue updated (status, priority, type)
Child/Parent relationshipsParent field changed, subtask created
Time in statusStatus transitions

Available Keywords

KeywordTypeDescription
linksNumberNumberCount of outgoing links from this issue
linkedByNumberNumberCount of incoming links to this issue
linkedByIssueStringIssue keys that link to this issue
linkedByStatusStringStatus names of issues linking to this issue
linkedByCategoryNameStringStatus category of issues linking to this issue
linkedByPriorityStringPriority of issues linking to this issue
linkedByIssueTypeStringIssue type of issues linking to this issue

Hierarchy Keywords

KeywordTypeDescription
childrenNumberNumberCount of child issues (subtasks or children)
childrenIssueIdsStringIDs of child issues

Operators

Number Keywords

linksNumber, linkedByNumber, childrenNumber

OperatorExampleDescription
=linksNumber = 5Exactly 5 outgoing links
!=linkedByNumber != 0Has at least one incoming link
>childrenNumber > 3More than 3 children
>=linksNumber >= 1At least 1 outgoing link
<linkedByNumber < 10Fewer than 10 incoming links
<=childrenNumber <= 5At most 5 children

String Keywords

linkedByIssue, linkedByStatus, linkedByCategoryName, linkedByPriority, linkedByIssueType

OperatorExampleDescription
=linkedByStatus = "Done"Linked by issue with exact status
!=linkedByPriority != "Low"Not linked by low priority issue
~linkedByIssue ~ "PROJ"Linked by issue key containing "PROJ"
!~linkedByStatus !~ "Progress"Not linked by status containing "Progress"

Examples

-- Issues with many dependencies (incoming links)
linkedByNumber > 5

-- Issues that are well-connected (both directions)
linksNumber > 2 AND linkedByNumber > 2

-- Orphan issues (no links at all)
linksNumber = 0 AND linkedByNumber = 0

Finding Issues by Linked Issue Properties

-- Issues blocked by high-priority work
linkedByPriority = "High" AND linkedByStatus != "Done"

-- Issues linked to bugs
linkedByIssueType = "Bug"

-- Issues linked by completed work
linkedByStatus = "Done"

-- Issues in the "In Progress" status category chain
linkedByCategoryName = "In Progress"

Finding Issues by Hierarchy

-- Parent issues with many subtasks
childrenNumber >= 5

-- Issues that are parents (have children)
childrenNumber > 0

-- Leaf issues (no children)
childrenNumber = 0

Combining Keywords with Standard JQL

-- High-priority issues blocked by other high-priority issues
priority = High AND linkedByPriority = "High"

-- Epics with many child stories
issuetype = Epic AND childrenNumber > 10

-- Issues in a specific project with external dependencies
project = DEV AND linkedByIssue ~ "EXT"

Performance Considerations

  • Indexed for Speed: JQL keywords are indexed by Jira, so queries are fast
  • Combine Wisely: Complex queries with many keywords may still impact performance
  • Use Specific Values: Exact matches (=) are faster than contains (~)
  • Limit Scope: Add project or other filters to reduce result set size

Indexing Timing

  • New Issues: Indexed immediately upon creation
  • Updated Issues: Re-indexed within seconds of changes
  • Linked Issues: Both source and target issues are re-indexed when links change
  • Bulk Operations: May take longer to fully index

Troubleshooting

  1. Wait a few seconds for indexing to complete
  2. Verify the issue has the expected links/relationships
  3. Check that Argon is properly installed and running

Unexpected Results

  1. Remember linksNumber = outgoing, linkedByNumber = incoming
  2. String comparisons are case-sensitive for = operator
  3. Use ~ for partial/case-insensitive matching