Я смог использовать постфильтры:
POST _search
{
"query": {
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
}
}
},
"post_filter":{
"terms" : { "tag" : ["tech", "luxury"] }
},
...
}
код для выполнения этого запроса:
SearchEngine searchEngine=SearchEngineHelperUtil
.getSearchEngine(s_ctx.getSearchEngineId());
IndexSearcher indexSearcher = searchEngine.getIndexSearcher();
...
TermsFilter termsFilter = new TermsFilter("tag");
termsFilter.addValue("tech");
termsFilter.addValue("luxury");
BooleanQuery booleanQuery = new BooleanQueryImpl(); //use factory instead
...
booleanQuery.setPostFilter(termsFilter);
indexSearcher.search(s_ctx, booleanQuery);
....
//s_ctx is the searchContext
я хочу, чтобы запрос был похож на ElasticSearch doc :
POST _search
{
"query": {
"bool" : {
"must" : {
"term" : { "user" : "kimchy" }
},
"filter": {
"terms" : { "tag" : ["tech", "luxury"] }
},
...
}
Как я могу выполнить этот запрос в моем собственном портлете, используя BoolQuery.class или что-то подобное в liferay 7?