ElasticSearch5.x Java API中的and、or和not,
ElasticSearch Java API 官网:https://www.elastic.co/guide/en/elasticsearch/reference/5.2/getting-started.htmlElasticSearch 过滤条件,类似于SQL中的and、or、not
demo如下:
//搜索内容设置>>>>>>>>>>>>>>>>>>>>>>
//索引"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();
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。