use of org.springframework.data.elasticsearch.core.query.NativeSearchQuery in project xm-ms-entity by xm-online.
the class XmEntityPermittedSearchRepository method searchByQueryAndTypeKey.
/**
* Search for XmEntity by type key and query.
* @param query the query
* @param typeKey the type key
* @param pageable the page info
* @param privilegeKey the privilege key
* @return permitted entities
*/
public Page<XmEntity> searchByQueryAndTypeKey(String query, String typeKey, Pageable pageable, String privilegeKey) {
String permittedQuery = buildPermittedQuery(query, privilegeKey);
// TODO disable elastic analized to field "typeKey" and fix this
val prefix = (typeKey + ".").toLowerCase();
val typeKeyQuery = boolQuery().should(matchQuery(TYPE_KEY, typeKey)).should(prefixQuery(TYPE_KEY, prefix)).minimumNumberShouldMatch(1);
val esQuery = isEmpty(permittedQuery) ? boolQuery().must(typeKeyQuery) : typeKeyQuery.must(simpleQueryStringQuery(permittedQuery));
log.debug("Executing DSL '{}'", esQuery);
NativeSearchQuery queryBuilder = new NativeSearchQueryBuilder().withQuery(esQuery).withPageable(pageable).build();
return getElasticsearchTemplate().queryForPage(queryBuilder, XmEntity.class);
}
Aggregations