Hello,
I'm using JanusGraph with Cassandra (0.5.2) and ElasticSearch.
I try to optimize my queries and use the mixed indexes as much as possible, in particular for sortings, but I have some difficulties:
It is not possible to sort by properties that can have missing values (or I get a "The property does not exist as the key has no associated value for the provided element"). Therefore I used ".order().by(coalesce(values('closingDate'), new Date()))" but in this case, the index is not used.
If there is only one sorting criterion, I probably can do something like:
g.inject(1).union(
g.V().hasLabel('Case').has('closingDate').order().by('closingDate'),
g.V().hasLabel('Case').hasNot('closingDate'))
But what is my best option if I want to use several criteria?
I also note that the FilterRankingStrategy strategy can have negative effect on performance when there are filters that don't use index. For example, the following query is faster without step reordering.
g.V().hasLabel('Case').has('closingDate').order().by('closingDate').filter(out('attachment').has('file'))
FilterRanking swaps order() and filter() steps and then index is not used for sorting.
Any help will be much appreciated.
Toom.