本章通过ElasticSearch进行查询
must 多个查询条件的完全匹配,相当于 and。
mustNot 多个查询条件的相反匹配,相当于 not。
should 至少有一个查询条件匹配, 相当于 or。
1.创建查询类
1.1 根据系统id进行查询
@Slf4j
@Repository
public class ESDao {
@Autowired
private RestHighLevelClient restHighLevelClient;
/**
* 根据系统id查询出记录
* select * from user where id=""
*
* @param id
* @return
*/
public User selectById(String id) {
try {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
QueryBuilder ids = QueryBuilders.termQuery("id", id);
boolQueryBuilder.must(ids);
searchSourceBuilder.size(1);
searchSourceBuilder.query(boolQueryBuilder);
SearchRequest searchRequest = new SearchRequest(User.USER_INDEX, User.USER_INDEX).source(searchSourceBuilder);
log.info("selectById {}", FastJSONUtil.setJsonString(searchRequest.toString()));
SearchResponse response = restHighLevelClient.search(searchRequest);
SearchHit[] hits = response.getHits().getHits();
String sourceAsString = hits[0].getSourceAsString();
return FastJSONUtil.parsePojo(sourceAsString, User.class);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
1.2 根据索引查询全部数据
/**
* select * from user
*
* @return
*/
public List<User> s