Attaching the relevant stacktrace:
java.lang.NullPointerException
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.ElasticsearchSimpleQueryStringPredicateBuilder.doBuild(ElasticsearchSimpleQueryStringPredicateBuilder.java:141)
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.AbstractElasticsearchSearchPredicateBuilder.build(AbstractElasticsearchSearchPredicateBuilder.java:49)
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.ElasticsearchSearchPredicate.build(ElasticsearchSearchPredicate.java:28)
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.ElasticsearchBooleanPredicateBuilder.contributeClauses(ElasticsearchBooleanPredicateBuilder.java:142)
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.ElasticsearchBooleanPredicateBuilder.doBuild(ElasticsearchBooleanPredicateBuilder.java:108)
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.AbstractElasticsearchSearchPredicateBuilder.build(AbstractElasticsearchSearchPredicateBuilder.java:49)
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.ElasticsearchSearchPredicate.build(ElasticsearchSearchPredicate.java:28)
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.ElasticsearchSearchPredicateBuilderFactoryImpl.contribute(ElasticsearchSearchPredicateBuilderFactoryImpl.java:79)
at org.hibernate.search.backend.elasticsearch.search.predicate.impl.ElasticsearchSearchPredicateBuilderFactoryImpl.contribute(ElasticsearchSearchPredicateBuilderFactoryImpl.java:41)
at org.hibernate.search.engine.search.query.dsl.spi.AbstractSearchQueryOptionsStep.contribute(AbstractSearchQueryOptionsStep.java:193)
at org.hibernate.search.engine.search.query.dsl.spi.AbstractSearchQueryOptionsStep.where(AbstractSearchQueryOptionsStep.java:68)
at org.hibernate.search.engine.search.query.dsl.impl.DefaultSearchQuerySelectStep.where(DefaultSearchQuerySelectStep.java:92)
at org.hibernate.search.engine.search.query.dsl.spi.AbstractDelegatingSearchQuerySelectStep.where(AbstractDelegatingSearchQuerySelectStep.java:74)
And here is the code that builds the query predicate:
return searchSession.search(searchScope).where(searchScope.predicate().bool(b -> {
//making sure cross-customer data is not shown
b.must(searchScope.predicate().match().field("customerId").matching(customerId));
//matching objects according to presence of user query
if (StringUtils.isBlank(finalQuery)) {
b.must(searchScope.predicate().matchAll());
} else {
b.must(searchScope.predicate().simpleQueryString().fields()
.matching(SearchUtil.getLuceneQuery(finalQuery)));
}
//apply user table filter
if (StringUtils.isNotBlank(filter)) {
String[] filters = filter.split(";");
for (String tempFilter : filters) {
String[] filterArray = tempFilter.split("=");
String[] filterValues = filterArray[1].split(",");
b.must(searchScope.predicate().bool(c -> {
for (String filterValue : filterValues) {
c.should(searchScope.predicate().match().field(filterArray[0]).matching(filterValue));
}
}));
}
}
//apply global account filter
if (!ObjectUtils.isEmpty(accountIds)) {
b.must(searchScope.predicate().bool(c -> {
for (String accountId : accountIds) {
c.should(searchScope.predicate().match().field("accountId").matching(accountId));
}
}));
}
//apply predicates for metrics if required
if (!ObjectUtils.isEmpty(booleanPredicateClausesSteps)) {
for (BooleanPredicateClausesStep booleanPredicateClausesStep : booleanPredicateClausesSteps)
b.must(booleanPredicateClausesStep);
}
}).toPredicate());