Elasticsearch項(xiàng)目簡(jiǎn)介
maven依賴
<dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
</dependency>
jdbc配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
username: root
password: 111111
hikari:
minimum-idle: 5
maximum-pool-size: 15
auto-commit: true
idle-timeout: 30000
pool-name: DatebookHikariCP
max-lifetime: 1800000
connection-timeout: 30000
connection-test-query: SELECT 1
data:
elasticsearch:
repositories:
enabled: true
cluster-name: docker-cluster # this name you can set in elasticsearch.yml config
cluster-nodes: localhost:9300 # elasticsearch host and port
Elasticsearch repository
elasticsearch repository基于spring data jpa規(guī)范,對(duì)elasticsearch數(shù)據(jù)進(jìn)行crud操作,如果項(xiàng)目本身就是使用hibernate+jpa建議使用這種方式進(jìn)行elasticsearch數(shù)據(jù)操作兑燥。
public interface UserSearchRepository extends ElasticsearchRepository<User, Long> {
/**
* find user by user name
*
* @param id user id
* @return
*/
User findUserById(Long id);
}
Elasticsearch template
如果項(xiàng)目使用的是mybatis等其他orm框架渣锦,建議使用elasticsearch template對(duì)數(shù)據(jù)進(jìn)行操作霍狰。
ESService
項(xiàng)目中ESService 是基于elasticsearch template的一層常用封裝推正,如果無(wú)法滿足需求训柴,請(qǐng)直接使用elasticsearch template進(jìn)行數(shù)據(jù)操作滩报。
public interface ESService {
/**
* 建立索引
*
* @param clazz
* @return
*/
public <T> boolean createIndex(Class<T> clazz);
/**
* 批量插入或更新數(shù)據(jù)
*
* @param list
* @param <T>
* @return
*/
public <T> boolean batchInsertOrUpdate(List<T> list);
/**
* 新增或更新數(shù)據(jù)
*
* @param t
* @return
*/
public <T> boolean insertOrUpdate(T t);
/**
* 通過(guò)實(shí)體類型及id刪除數(shù)據(jù)
*
* @param clazz 實(shí)體類型
* @param id id
* @param <T>
* @return
*/
public <T> boolean deleteById(Class<T> clazz, String id);
/**
* 通過(guò)id查詢數(shù)據(jù)
*
* @param clazz 實(shí)體類型
* @param id 數(shù)據(jù)id
* @param <T>
* @return
*/
public <T> T queryById(Class<T> clazz, String id);
/**
* 列表查詢
*
* @param clazz 實(shí)體類型
* @param queryMap 查詢參數(shù)
* @param sortBy 排序字段
* @param order 排序方式
* @param <T>
* @return
*/
public <T> List<T> queryList(Class<T> clazz, Map<String, Object> queryMap, String sortBy, SortOrder order);
/**
* 分頁(yè)查詢
*
* @param clazz 實(shí)體類型
* @param page 分頁(yè)
* @param queryMap 查詢參數(shù)
* @param sortBy 排序字段
* @param order 排序方式
* * @param <T>
* @return
*/
public <T> Page<T> queryPage(Class<T> clazz, Page<T> page, Map<String, Object> queryMap, String sortBy,
SortOrder order);
/**
* 通過(guò)string查詢數(shù)據(jù)
*
* @param <T>
* @return
*/
public <T> T queryByString(String id, Class<T> clazz);
}