List<Object> list = new ArrayList<>();
BoolQueryBuilder search = getBoolQueryBuilder(games);
SearchResponse searchRequestBuilder = client.prepareSearch("game_index")
.setTypes("test")
.setQuery(search)
.setFrom(searchRequest.getPageNumber() - 1).setSize(searchRequest.getPageSize()).setExplain(true)
.get();
SearchHits searchHits = searchRequestBuilder.getHits();
for (SearchHit searchHit : searchHits) {
list.add(JSON.parseObject(searchHit.getSourceAsString()).get("id").toString());
}
private BoolQueryBuilder getBoolQueryBuilder(TbGames games) {
return QueryBuilders.boolQuery()
.must(gameUtils.getStatus(Integer.parseInt(games.getStatus())))
.must(QueryBuilders.matchQuery("gameName", gameUtils.checkWord(games.getGameName())).boost(5));
}
public class GameUtils {
public static final int STATUS_ZERO = 1;
public static final int STATUS_ONE = STATUS_ZERO << 1;
public static final int STATUS_TWO = STATUS_ZERO << 2;
public static final int STATUS_THREE = STATUS_ZERO << 3;
public static final int STATUS_FOUR = STATUS_ZERO << 4;
public static final int STATUS_FIVE = STATUS_ZERO << 5;
public static final int STATUS_SIX = STATUS_ZERO << 6;
public BoolQueryBuilder getStatus(int status) {
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
if ((status & STATUS_ZERO) == STATUS_ZERO) {
queryBuilder.should(QueryBuilders.termQuery("status", 0));
}
if ((status & STATUS_ONE) == STATUS_ONE) {
queryBuilder.should(QueryBuilders.termQuery("status", 1));
}
if ((status & STATUS_TWO) == STATUS_TWO) {
queryBuilder.should(QueryBuilders.termQuery("status", 2));
}
if ((status & STATUS_THREE) == STATUS_THREE) {
queryBuilder.should(QueryBuilders.termQuery("status", 3));
}
if ((status & STATUS_FOUR) == STATUS_FOUR) {
queryBuilder.should(QueryBuilders.termQuery("status", 4));
}
if ((status & STATUS_FIVE) == STATUS_FIVE) {
queryBuilder.should(QueryBuilders.termQuery("status", 5));
}
if ((status & STATUS_SIX) == STATUS_SIX) {
queryBuilder.should(QueryBuilders.termQuery("status", 6));
}
return queryBuilder;
}
}