<dependency>
<groupId></groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.16.2</version>
</dependency>
<dependency>
<groupId></groupId>
<artifactId>elasticsearch</artifactId>
<version>7.16.2</version>
</dependency>
<dependency>
<groupId></groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>2.3.</version>
</dependency>
@Configuration
public class EsConfig {
/**
* 配置RestHighLevelClient对象,将该对象交给Spring容器去管理
* 配置es服务器的ip、port
*
* @return RestHighLevelClient对象
*/
@Bean("restHighLevelClient")
public RestHighLevelClient restHighLevelClient() {
return new RestHighLevelClient(
(
new HttpHost("这里是ip", "这里是端口port", "http")));
}
}
- 业务实现类里引入RestHighLevelClient对象,就可以开始使用啦
@Qualifier("restHighLevelClient")
@Autowired
RestHighLevelClient client;
新增 |
IndexRequest |
更新 |
UpdateRequest |
删除 |
DeleteRequest |
根据ID获取 |
GetRequest |
(关键字)检索查询 |
SearchRequest |
public static final String FILE_INDEX = "file";
public ResponsePage<FilePageDTO, FilePageVO> listPageByEs(ResponsePage<FilePageDTO, FilePageVO> param) {
FilePageDTO condition = ();
// 构建一个index为FILE_INDEX的请求
SearchRequest request = new SearchRequest(FILE_INDEX);
// 构建查询source内容构造器
SearchSourceBuilder srb = new SearchSourceBuilder();
// 设置分页查询信息: 从哪页page开始查
((()).intValue());
// 设置分页查询信息: 查询页大小
((()).intValue());
// 构造参数查询构造器
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
if (() != null) {
// 等值、精准查询 fileType为XX的信息
(("fileType", ()));
}
if ((())) {
// 等值、模糊查询 fileName包含XX的信息
(("fileName", ()));
}
// 设置查询参数信息
(boolQueryBuilder);
(srb);
SearchResponse response = null;
ArrayList<FilePageVO> resultList = ();
try {
// 调用es查询
response = (request, );
} catch (IOException e) {
("查es出错");
}
// 获取返回信息
SearchHit[] hits = ().getHits();
("hits: {}", (hits));
if ((hits)) {
return param;
}
(hits).forEach(x -> {
FilePageVO filePageVO = ((()), );
(filePageVO);
});
(().getTotalHits().value);
(resultList);
return param;
}
public Response saveForEs(FileCreateDTO param) {
ResourceFile file = new ResourceFile();
(());
(());
(());
(());
// 存库
(file);
(());
// 构建新增请求
IndexRequest request = new IndexRequest();
// 设置_index、手动设置 _id
(FILE_INDEX).id(().toString());
// 将信息存放到source中
((param), );
IndexResponse response = null;
try {
// 调用api创建
response = (request, );
} catch (IOException e) {
("保存es出错");
}
RestStatus status = ();
return ((status));
}
public Response editForEs(FileCreateDTO param) {
ResourceFile file = getById(());
(param, file);
// 更新表
updateById(file);
// 构建更新请求
UpdateRequest request = new UpdateRequest();
// 指定index以及要更新的ID
(FILE_INDEX).id(().toString());
// 指定更新字段、值
(, "id", ());
UpdateResponse update = null;
try {
// 调用更新api更新
update = (request, );
} catch (IOException e) {
("更新es出错");
}
RestStatus status = ();
return ((status));
}
public Response removeForEs(Long id) {
// 库里删除
removeById(id);
// 构建删除请求
DeleteRequest request = new DeleteRequest();
// 指定index以及id
(FILE_INDEX).id(());
DeleteResponse response = null;
try {
// 调用api删除
response = (request, );
} catch (IOException e) {
("删除es出错");
}
RestStatus status = ();
return ((status));
}
public ArrayList<FileVO> listAllByEs() {
ArrayList<FileVO> resultList = ();
// 构造指定index的查询请求
SearchRequest request = new SearchRequest(FILE_INDEX);
// 创建查询source构造器
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 设置查询类型: 全部
(());
(searchSourceBuilder);
SearchResponse response = null;
try {
// 调用api查询
response = (request, );
} catch (IOException e) {
("查询es出错");
}
// 遍历结果 返回list
SearchHit[] hits = ().getHits();
(hits).forEach(x -> {
FileVO fileVO = ((()), );
(fileVO);
});
return resultList;
}
public Response getDetailForEs(Long id) {
// 构建查询单个get请求
GetRequest request = new GetRequest();
// 设置查询索引index以及id
(FILE_INDEX).id(());
GetResponse response = null;
try {
// 调用api查询
response = (request, );
} catch (IOException e) {
("获取详情 es出错");
}
// 封装返回对象信息
FileVO fileVO = ((()), );
return (fileVO);
}