ElasticSearch6.x Java API中的and、or和not

ElasticSearch Java API 官网: https://www.elastic.co/guide/en/elasticsearch/reference/6.1/getting-started.html

ElasticSearch 过滤条件,类似于SQL中的and、or、not

demo如下:

[java]  view plain  copy
  1.               //搜索内容设置>>>>>>>>>>>>>>>>>>>>>>  
  2. //索引"student_manage"是索引"student"、"class"、"course_info"共同的别名  
  3. SearchRequestBuilder searchRequestBuilder = client.prepareSearch("student_manage");  
  4. //searchRequestBuilder.setTypes(type);  
  5. searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);  
  6. ......  
  7.   
  8. //开始过滤>>>>>>>>>>>>>>>>>>>>>>  
  9.    //************过滤条件中,must相当于and,should相当于or,must_not相当于not*****************//  
  10. //过滤条件1  
  11. org.elasticsearch.index.query.QueryBuilder postFilter1= QueryBuilders  
  12.         .boolQuery()  
  13.         .must(QueryBuilders.termsQuery("_index""student"))  
  14.         .must(QueryBuilders.termsQuery("sex""male"))  
  15.         .must(QueryBuilders.termsQuery("age""16","17"));  
  16. //过滤条件2  
  17. org.elasticsearch.index.query.QueryBuilder postFilter2= QueryBuilders  
  18.         .boolQuery()  
  19.         .must(QueryBuilders.termsQuery("_index""class"))  
  20.         .must(QueryBuilders.termsQuery("type""math"))  
  21.         .must(QueryBuilders.boolQuery().should(QueryBuilders.termsQuery("num""6","8")));  
  22. //过滤条件3  
  23. org.elasticsearch.index.query.QueryBuilder postFilter3= QueryBuilders  
  24.         .boolQuery()  
  25.         .must(QueryBuilders.termsQuery("_index""course_info"))  
  26.         .must(QueryBuilders.termsQuery("isopen""1"))  
  27.         .must(QueryBuilders.termsQuery("status""2"))  
  28.         .must(QueryBuilders.termsQuery("grade""2"));  
  29. //整合三者过滤条件(OR)  
  30. org.elasticsearch.index.query.QueryBuilder postFilterBool =QueryBuilders.boolQuery()  
  31.         .should(postFilter1)  
  32.         .should(postFilter2)  
  33.         .should(postFilter3);  
  34. searchRequestBuilder.setPostFilter(postFilterBool);  
  35. //执行搜索>>>>>>>>>>>>>>>>>>>>>>  
  36. SearchResponse res = searchRequestBuilder.execute().actionGet();  

猜你喜欢

转载自blog.csdn.net/dreamer_good/article/details/80664143