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();
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();
相关文章推荐
- elasticsearch install and how to use javaapi
- Elasticsearch java API (12)Search API MultiSearch API
- ElasticSearch Java API
- ElasticSearch Java Api(三) -更新索引库
- Elasticsearch Java API(八)--搜索有相同父id的子文档
- Elasticsearch java API (9)更新的API
- ElasticSearch Java Api(二) -检索索引库
- ElasticSearch Java API
- Elasticsearch Java API (i)
- Elasticsearch Java API(九)--删除文档的field以及field的属性
- Elasticsearch5.4集群(二)java API升级
- ElasticSearch Java API
- ElasticSearch Java API(二)增删改查
- Elasticsearch java API (23)查询 DSL Geo查询
- [搜索]ElasticSearch Java Api(一)
- elasticsearch FunctionScore Java API
- Elasticsearch Java API
- Elasticsearch java API (13)Search API 使用聚合
- ElasticSearch Java API
- elasticsearch java api 5.5.1 依赖