EQL Query Language

Master advanced search with Elixion Query Language (EQL)

EQL Query Language

EQL (Elixion Query Language) is a powerful query language for finding exactly the issues you need. Similar to JQL, it provides sophisticated filtering with a readable syntax.

Getting Started

Accessing EQL

  1. Navigation: Sidebar → Advanced Search
  2. Direct URL: Navigate to /eql
  3. Keyboard: Press Ctrl/Cmd + K → type "Advanced Search"
  4. From Board: Click Advanced Search button

Interface

┌──────────────────────────────────────────────────────────────┐
│ EQL Query                                                    │
├──────────────────────────────────────────────────────────────┤
│ status = "In Progress" AND assignee = currentUser()         │
│                                                   [Run] [Save]│
├──────────────────────────────────────────────────────────────┤
│ Results: 12 issues                                           │
│                                                              │
│ AUTH-123  Login validation      In Progress  Alice  2d ago  │
│ AUTH-124  Signup form           In Progress  Alice  3d ago  │
│ UI-456    Button styles         In Progress  Alice  1d ago  │
└──────────────────────────────────────────────────────────────┘

Basic Syntax

Field Comparison

field = "value"

Examples

-- Find all bugs
type = "Bug"

-- Find issues assigned to me
assignee = currentUser()

-- Find high priority items
priority = "High"

Available Fields

Issue Fields

| Field | Description | Example | |-------|-------------|---------| | project | Project key | project = "AUTH" | | type | Issue type | type = "Bug" | | status | Current status | status = "In Progress" | | priority | Priority level | priority = "Critical" | | assignee | Assigned user | assignee = "alice" | | reporter | Creator | reporter = currentUser() | | labels | Applied labels | labels = "urgent" |

Date Fields

| Field | Description | Example | |-------|-------------|---------| | created | Creation date | created >= -7d | | updated | Last modified | updated >= startOfDay() | | duedate | Due date | duedate < +2w | | resolved | Resolution date | resolved >= startOfWeek() |

Numeric Fields

| Field | Description | Example | |-------|-------------|---------| | storypoints | Effort estimate | storypoints > 5 |

Text Fields

| Field | Description | Example | |-------|-------------|---------| | summary | Issue title | summary ~ "login" | | description | Issue body | description ~ "error" | | text | Title + body | text ~ "authentication" |

Relationship Fields

| Field | Description | Example | |-------|-------------|---------| | sprint | Sprint assignment | sprint = currentSprint() | | epic | Parent epic | epic = "AUTH-1" | | parent | Parent issue | parent IS NOT EMPTY |

Operators

Comparison Operators

| Operator | Meaning | Example | |----------|---------|---------| | = | Equals | status = "Done" | | != | Not equals | status != "Done" | | > | Greater than | created > -7d | | < | Less than | duedate < now() | | >= | Greater or equal | storypoints >= 5 | | <= | Less or equal | priority <= "Medium" |

Text Operators

| Operator | Meaning | Example | |----------|---------|---------| | ~ | Contains | text ~ "bug" | | !~ | Not contains | summary !~ "test" |

List Operators

| Operator | Meaning | Example | |----------|---------|---------| | IN | In list | status IN ("Open", "In Progress") | | NOT IN | Not in list | type NOT IN ("Epic", "Task") |

Null Operators

| Operator | Meaning | Example | |----------|---------|---------| | IS EMPTY | No value | assignee IS EMPTY | | IS NOT EMPTY | Has value | duedate IS NOT EMPTY |

Functions

User Functions

| Function | Returns | |----------|---------| | currentUser() | Your user |

assignee = currentUser()
reporter = currentUser()

Sprint Functions

| Function | Returns | |----------|---------| | currentSprint() | Active sprint |

sprint = currentSprint()

Date Functions

| Function | Returns | |----------|---------| | now() | Current date/time | | startOfDay() | Midnight today | | startOfWeek() | Monday this week | | startOfMonth() | First of month | | startOfYear() | First of year | | endOfDay() | End of today | | endOfWeek() | Sunday this week | | endOfMonth() | Last of month |

Relative Dates

| Expression | Meaning | |------------|---------| | -7d | 7 days ago | | +3d | 3 days from now | | -2w | 2 weeks ago | | +1w | 1 week from now | | -1m | 1 month ago |

Combining Conditions

AND (Both Must Match)

status = "Open" AND priority = "High"

OR (Either Matches)

priority = "Critical" OR priority = "High"

Grouping with Parentheses

(status = "Open" OR status = "In Progress") AND assignee = currentUser()

Complex Queries

project = "AUTH"
  AND type = "Bug"
  AND priority IN ("Critical", "High")
  AND (assignee = currentUser() OR assignee IS EMPTY)
  AND created >= -30d

Common Queries

My Work

-- My open issues
assignee = currentUser() AND status != "Done"

-- My overdue issues
assignee = currentUser() AND duedate < now() AND status != "Done"

-- Issues I created
reporter = currentUser()

-- Issues mentioning me
text ~ "@myusername"

Sprint Queries

-- Current sprint
sprint = currentSprint()

-- Incomplete sprint work
sprint = currentSprint() AND status NOT IN ("Done", "Closed")

-- Backlog (no sprint)
sprint IS EMPTY AND status = "Open"

Bug Tracking

-- All open bugs
type = "Bug" AND status NOT IN ("Done", "Closed")

-- Critical unassigned bugs
type = "Bug" AND priority = "Critical" AND assignee IS EMPTY

-- Bugs created this week
type = "Bug" AND created >= startOfWeek()

-- Old bugs
type = "Bug" AND created < -30d AND status != "Done"

Due Date Queries

-- Due this week
duedate >= startOfWeek() AND duedate <= endOfWeek()

-- Overdue
duedate < now() AND status NOT IN ("Done", "Closed")

-- Due in next 7 days
duedate >= now() AND duedate <= +7d

-- No due date
duedate IS EMPTY AND type != "Epic"

Saving Queries

Save as Filter

  1. Write query
  2. Click Save
  3. Name filter
  4. Choose visibility:
    • Personal
    • Project
    • Team

Using Saved Filters

Saved Filters
─────────────

Personal:
├── My Bugs
├── My High Priority
└── Overdue Items

Project:
├── Open Bugs
├── Sprint Backlog
└── Unassigned

Sharing Filters

  1. Open saved filter
  2. Click Share
  3. Select recipients
  4. Set permissions (view/edit)

Query Results

Result Options

  • View: List, Board, Table
  • Export: CSV, JSON
  • Bulk Actions: Update, Move

Ordering Results

project = "AUTH" ORDER BY priority DESC, created ASC

Best Practices

Writing Queries

Do:

  • Quote text values: "In Progress"
  • Use functions: currentUser(), currentSprint()
  • Build incrementally
  • Validate before running

Don't:

  • Forget quotes around text
  • Mix case: use "In Progress" not "in progress"
  • Write overly complex queries
  • Forget parentheses for grouping

Performance

  • Start with indexed fields (project, status, type)
  • Add text search last
  • Limit date ranges when possible
  • Use specific projects

Troubleshooting

Common Errors

"Invalid field"

  • Check field name spelling
  • Verify field exists

"Unexpected token"

  • Check for missing quotes
  • Verify parentheses match
  • Check AND/OR syntax

"Invalid date"

  • Use correct format: -7d, now()
  • Check function names

No Results

  • Simplify query
  • Check field values
  • Verify project access

For more search options, see Basic Search.