How was JIRA Query Language developed - custom build or based on existing frameworks?

I’m working on a project where we need to implement advanced search functionality similar to what Atlassian offers in JIRA. We’re trying to figure out the best approach for building our own query language.

From what I can tell through research, it seems like Atlassian created their query language entirely from the ground up. But I wanted to check here before making any assumptions. Does anyone have insight into their development approach?

Specifically wondering if they used any existing open source parsing libraries or query frameworks as a foundation, or if they really did build everything custom. Any technical details about their implementation strategy would be helpful for our planning.

The functionality they achieved is really impressive and we’re trying to understand the effort involved in creating something similar.

I’ve reverse-engineered chunks of JQL for compatibility work - it’s built on standard stuff but heavily customized. The parsing uses typical lexer/parser patterns (probably generated tools), but the real challenge was their query execution engine handling JIRA’s hierarchical data efficiently. Most people miss that JQL’s speed comes from aggressive query optimization and caching, not just Lucene indexing. They built smart query planners that rewrite searches based on data distribution and user permissions. If you’re building something similar, don’t underestimate handling dynamic field definitions and keeping search consistent during data updates. The query syntax is easy - the execution engine and data sync architecture is where they put the real work.

From what I’ve seen with enterprise search projects, JQL uses a hybrid approach - not built completely from scratch. Atlassian definitely made their own syntax and business logic, but they probably used existing parsing tech underneath. Most companies go this route: use established parser generators like ANTLR or JavaCC for lexical analysis and grammar parsing, then build custom semantic layers on top. The real complexity in JQL isn’t parsing - it’s the domain-specific stuff like handling JIRA’s field types, permissions, and how issues relate to each other. If you’re building something similar, start with a proven parsing framework and focus your custom work on business logic and query optimization. Parsing infrastructure is solved - the domain semantics is where you’ll spend most of your dev time.

I’ve worked with JIRA’s internals on several enterprise integrations. JQL runs on Apache Lucene for indexing and search - the query language is custom-built with standard parsing, but Lucene does the actual search work. What makes JQL special isn’t the parsing - it’s how they mapped JIRA’s complex data model into searchable indexes. The real engineering went into permission filtering, custom fields, and cross-project queries. For your implementation, start with Elasticsearch or Solr as your search backend and build a domain-specific query translator on top. You’ll get battle-tested search infrastructure while focusing on the business logic that makes your app unique.

Been through this exact scenario multiple times at work. Everyone’s fixated on parsing frameworks and search backends, but you’re missing what really matters.

The nightmare isn’t building JQL - it’s maintaining all the integrations and data transformations that actually make advanced search work. You’ll burn months just on edge cases in your custom parser.

I solved this whole mess with Latenode. Instead of rebuilding JQL from scratch, I connected our existing databases straight to multiple search services and built dynamic query builders through visual workflows.

When users need complex searches, Latenode transforms their input into whatever format the backend needs - Elasticsearch, SQL databases, external APIs. Zero custom parsing.

The automation handles permission filtering and field mapping automatically. When requirements change, I just tweak the workflow instead of rewriting parser logic.

Saved us 6+ months of dev time and it’s way more flexible than anything we could’ve built custom.

totally agree! JQL isn’t from scratch, they leveraged a lot of open source stuff. lucene is powerful for indexing, and even tho they likely customized their query parsing, they’ve got a solid base there. Elasticsearch or Solr would be great for your project, made my life easier when I used them!