您的位置:首页 > 编程语言 > Java开发

ElasticSearch Java API中的and、or和not

2018-02-01 13:07 519 查看
[java] view
plain copy

              //搜索内容设置>>>>>>>>>>>>>>>>>>>>>>  

//索引"student_manage"是索引"student"、"class"、"course_info"共同的别名  

SearchRequestBuilder searchRequestBuilder = client.prepareSearch("student_manage");  

//searchRequestBuilder.setTypes(type);  

searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);  

......  

  

//开始过滤>>>>>>>>>>>>>>>>>>>>>>  

   //************过滤条件中,must相当于and,should相当于or,must_not相当于not*****************//  

//过滤条件1  

org.elasticsearch.index.query.QueryBuilder postFilter1= QueryBuilders  

        .boolQuery()  

        .must(QueryBuilders.termsQuery("_index", "student"))  

        .must(QueryBuilders.termsQuery("sex", "male"))  

        .must(QueryBuilders.termsQuery("age", "16","17"));  

//过滤条件2  

org.elasticsearch.index.query.QueryBuilder postFilter2= QueryBuilders  

        .boolQuery()  

        .must(QueryBuilders.termsQuery("_index", "class"))  

        .must(QueryBuilders.termsQuery("type", "math"))  

        .must(QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("num", "6","8")));  

//过滤条件3  

org.elasticsearch.index.query.QueryBuilder postFilter3= QueryBuilders  

        .boolQuery()  

        .must(QueryBuilders.termsQuery("_index", "course_info"))  

        .must(QueryBuilders.termsQuery("isopen", "1"))  

        .must(QueryBuilders.termsQuery("status", "2"))  

        .must(QueryBuilders.termsQuery("grade", "2"));  

//整合三者过滤条件(OR)  

org.elasticsearch.index.query.QueryBuilder postFilterBool =QueryBuilders.boolQuery()  

        .should(postFilter1)  

        .should(postFilter2)  

        .should(postFilter3);  

searchRequestBuilder.setPostFilter(postFilterBool);  

//执行搜索>>>>>>>>>>>>>>>>>>>>>>  

SearchResponse res = searchRequestBuilder.execute().actionGet();  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: