elasticsearch中需要查询name ='张三' 并且 code为1或2或3的数据,下面有两种写法:
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
1)第一种
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
QueryBuilder name= QueryBuilders.termQuery("name", "张三");
boolQueryBuilder.must(name);
BoolQueryBuilder boolQueryBuilder_2 = QueryBuilders.boolQuery();
list.forEach(temp ->{
boolQueryBuilder_2.should(QueryBuilders.termQuery("code", temp));
});
boolQueryBuilder.must(boolQueryBuilder_2);
2)第二种
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
QueryBuilder name= QueryBuilders.termQuery("name", "张三");
QueryBuilder code= QueryBuilders.termsQuery("code", list); //注意此为termsQuery
boolQueryBuilder.must(name).must(code);