使用List作为构造器(重要)
List<Query> objects = new ArrayList<>();
//Term
if(StringUtil.isNotBlank(user.getId())){
Query titleQuery = TermQuery.of(m -> m
.field("ID")
.value(user.getId())
)._toQuery();
objects.add(titleQuery);
}
//Wildcard
if(StringUtil.isNotBlank(user.getName())){
Query columnNameQuery = WildcardQuery.of(m -> m
.field("NAME").value("*"+ user.getName() + "*"))._toQuery();
objects.add(columnNameQuery);
}
//Range
if(ObjectUtil.isNotEmpty(user.getCreateDate())){
Query sampleNumQuery = RangeQuery.of(m -> m.
field("UPLOADDATE").from(user.getCreateDate()).format("yyyy-MM-dd HH:mm:ss"))._toQuery();
objects.add(sampleNumQuery);
}
SearchResponse<User> response = es.search(s -> s
.index("TEST_INDEX")
.query(p -> p.bool(b-> b.must(objects)))
.from(1)
.size(10),
User.class
);
SearchResponse<User> response = es.search(response, User.class);
List<Hit<User>> hits = response.hits().hits();
List<UserVO> userList = new ArrayList<>(hits.size());
for (Hit<User> hit : hits) {
User user2 = hit.source();
userList.add(user2);
}
如需了解其他, 高级用法,分页处理,es8语法打印,嵌套多层怎么写,
可留言,要是有这个需求我就再写一篇