I am trying to perform a date range search directly on the Lucene index generated by Atlassian Jira. Following this guide, I hva ended up building my query in the following manner:
Which gives the Lucene query:
customfield_10106:[2010-01-10-00-00-00 TO 2020-12-10-00-00-00]
However, this search yields no results, due the format DateTime values stored in the Lucene index.
How should I write my query to search these encoded dates?
Examples of indexed data:
The DateTime values are stored as shown in the following picture from Luke:
A closeup of the DateTime values stored:
Here is what the first result looks like from the IntelliJ debugger:
JIRA stores dates in Lucene as the number of seconds since the Epoch (1 January 1970) in Lucene long prefix-coded format.
When viewing these values in Luke, use the 'Long (prefix-coded)' option under 'Show content as:' to show this value:
Programatically, using the JIRA API, you can use LuceneUtils.dateToString() or stringToDate() to go the other way. Or using the Lucene API, you can interpret the string value as a number of seconds by using NumericUtils.prefixCodedToLong() or longToPrefixCoded().
Try making a TermRangeQuery with lowerTerm and upperTerm filled in using LuceneUtils.dateToString().
Thank you for the thorough explanation! Using the LuceneUtils.dateToString(someDate) worked like a charm. Thanks! :-)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For future reference, here how I ended up making the range query. Thanks to Peter!
private Query getSampleRangeQuery() {
Date lower = new GregorianCalendar(2017, Calendar.AUGUST, 1).getTime();
Date upper = new GregorianCalendar(2017, Calendar.SEPTEMBER, 31).getTime();
return new TermRangeQuery("customfield_10106", LuceneUtils.dateToString(lower), LuceneUtils.dateToString(upper), true, true);
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.