JestClient来操作es

参考https://blog.csdn.net/a1721037899/article/details/86511810

删除文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 根据主键删除文档
* @param index 待操作的库
* @param type 待操作的表
* @param id 待操作的主键id
* @return
*/
public JestResult deleteDocument(String index, String type, String id) {
Delete delete = new Delete.Builder(id).index(index).type(type).build();
JestResult result = null ;
try {
result = client.execute(delete);
log.info("deleteDocument == " + result.getJsonString());
} catch (IOException e) {
e.printStackTrace();
}
return result;
}

查询文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Override
public Page<FullTextDTO> query(String queryString, int pageNo, int size) {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
QueryStringQueryBuilder queryStringQueryBuilder = new QueryStringQueryBuilder(queryString);
searchSourceBuilder.query(queryStringQueryBuilder).from(from(pageNo, size)).size(size);
log.info("搜索DSL:{}", searchSourceBuilder.toString());
Search search = new Search.Builder(searchSourceBuilder.toString())
.addIndex(INDEX)
.addType(TYPE)
.build();
try {
SearchResult result = client.execute(search);
List<SearchResult.Hit<FullTextDTO, Void>> hits = result.getHits(FullTextDTO.class);
List<FullTextDTO> articles = hits.stream().map(hit -> {
FullTextDTO article = hit.source;
return article;
}).collect(toList());
int took = result.getJsonObject().get("took").getAsInt();
Page<FullTextDTO> page = Page.<FullTextDTO>builder().list(articles).pageNo(pageNo).size(size).total(result.getTotal()).took(took).build();
return page;
} catch (IOException e) {
log.error("search异常", e);
return null;
}
}

新增文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//数据库导入到索引库
@Override
public boolean save(FullTextDTO fullTextDTO) {
Index index = new Index.Builder(fullTextDTO).index(INDEX).type(TYPE).build();
JestResult jestResult = null;
try {
jestResult = client.execute(index);
} catch (IOException e) {
e.printStackTrace();
}
log.info("save返回结果{}", jestResult.getJsonString());
return true;

}