es和mysql是兩個常見的數據庫,如果在使用中將它們配合得當,可以使得整個系統的表現更為優秀。下面我們來看一下es和mysql是如何配合的。
通常來說,es用來進行全文搜索,mysql則主要用來存儲數據。當我們需要搜索某些數據時,我們可以使用es來搜索,獲得搜索結果后再利用mysql進行數據的存儲和更新。這種分工的方式可以降低mysql的負荷,提高搜索效率。
為了更好地配合es和mysql,我們需要對它們進行以下配置:
#es配置 spring.data.elasticsearch.cluster-name=es spring.data.elasticsearch.cluster-nodes=192.168.0.1:9300
#mysql配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root
其中,spring.data.elasticsearch.cluster-name和spring.data.elasticsearch.cluster-nodes是es的相關配置。而spring.datasource.driver-class-name、spring.datasource.url、spring.datasource.username、spring.datasource.password是mysql的相關配置。
除此之外,我們還需要按照以下方式進行代碼的編寫:
//es中搜索數據的代碼 public List- search(String key) { NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder(); queryBuilder.withQuery(QueryBuilders.termQuery("title", key)); Page
- page = itemRepository.search(queryBuilder.build()); return page.getContent(); }
//mysql中存儲數據的代碼 public int insert(User user) { String sql = "insert into user (name, age) values (?, ?)"; Object[] params = {user.getName(), user.getAge()}; int count = jdbcTemplate.update(sql, params); return count; }
將es和mysql進行配合是非常有必要的,它可以提高整個庫表的搜索效率,同時減少mysql的負荷。只要按照以上方式進行配置和編寫代碼,我們就可以將es和mysql做好配合,讓整個系統表現更優秀。