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

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

ElasticSearch 过滤条件,类似于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();

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值