当前位置: 首页 > elasticsearch, 搜索 > 正文

elasticsearch FilterQueryBuilder实例

关键字:
1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

记得以前写过一篇文章:elasticsearch应用:addPartialField函数过滤来实现图片字段不为空的返回。现在看来,实现很麻烦。

需求:查询多个频道下的图片类文章,并且有缩略图不能为空。

实现:用FilterQueryBuilder来实现。
代码如下:

public QueryBuilder getFilterQueryBuilder(String channelids,String q){
 
        //channelids通过"_"链接。例如:"22_24_26"
        //查询的关键字
        // 提取多个频道ID
        List<Long> channelids = new ArrayList<Long>();
        for(String id : channelids.split("_")){
            channelids.add(Long.parseLong(id));
        }
 
        FilteredQueryBuilder queryBuilder= QueryBuilders.filteredQuery(
          //即将被过滤的查询         
          new QueryStringQueryBuilder(q).analyzer("ik").field("title"), 
                    FilterBuilders.boolFilter()
                    //查询的频道应该在这些频道内
                    .should(FilterBuilders.termsFilter("channelid", channelids))
                    //文章类型必须为图片类型
                    .must(FilterBuilders.termFilter("model", 3))
                    //图片字段不能为null
                    .mustNot(FilterBuilders.termFilter("thumb", "null"))
                    );
        return queryBuilder;
    }

查询图片不能为空,用boolFilter的mustNot方法,term字段不能为null即可。注意,不能输入null,应该为”null”.

本文固定链接: http://www.chepoo.com/elasticsearch-filter-query-builder-example.html | IT技术精华网

elasticsearch FilterQueryBuilder实例:等您坐沙发呢!

发表评论