查询 多个状态随意组合

		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());
        }
  /**
     * 提取的搜索条件吧。。。。。
     *
     * @param games
     * @return
     */
    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 {


    /**
     * 状态,0:有效,1:升级中,2:测试,3:禁止推广,4:无效,5:预约。
     */
    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;


    /**
     * 游戏状态吧....
     *
     * @param status
     */
    public BoolQueryBuilder getStatus(int status) {

        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();

        // 状态,0:有效,1:升级中,2:测试,3:禁止推广,4:无效,5:预约。
        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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值