RestClient客户端
我们在spring项目中使用RestHighLevelClient客户端工具连接ES
客户端连接
pom引入
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.12.1</version>
</dependency>
在application中注入或者写成config配置都可以
@Bean
public RestHighLevelClient RestHighLevelClient(){
return new RestHighLevelClient(RestClient.builder(
HttpHost.create("http://ip:9200")));
}
测试是否成功连接
private RestHighLevelClient client;
@Autowired
private HotelService hotelService;
/**
* @description: 测试配置是否成功
*/
@Test
void test(){
System.out.println(client);
}
//输出
org.elasticsearch.client.RestHighLevelClient@1c8f6c66
那我们连接成功后开始测试方法
索引操作
创建index
@Test
void createHotelIndex() throws IOException {
//创建Request
CreateIndexRequest request = new CreateIndexRequest("hotel");
//DSL语句
request.source(MAPPING_TEMPLATE, XContentType.JSON);
//发送请求
client.indices().create(request, RequestOptions.DEFAULT);
}
这里的MAPPING_TEMPLATE就是我们创建index的DSL语句
我的参数
截取部分,大家替换自己写的DSL即可
删除index
@Test
void deleteHotelIndex() throws IOException {
//创建Request
DeleteIndexRequest request = new DeleteIndexRequest("hotel");
//发送请求
client.indices().delete(request, RequestOptions.DEFAULT);
}
存在index
@Test
void ExistHotelIndex() throws IOException {
//创建Request
GetIndexRequest request = new GetIndexRequest("hotel");
//发送请求
boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}
文档操作
文档单个添加
@Test
void testAddDocument() throws IOException {
//创建Request
Hotel hotel = hotelService.getById(60916L);
HotelDoc hotelDoc = new HotelDoc(hotel);
IndexRequest request = new IndexRequest("hotel").id(hotel.getId().toString());
request.source(JSON.toJSONString(hotelDoc),XContentType.JSON);
client.index(request,RequestOptions.DEFAULT);
}
文档批量添加
/**
* @description: 批量加入数据
* 批量查询、GET/hotel/_search
* 单条查询、GET/hotel/_doc/id值
*/
@Test
void testBulkRequest() throws IOException {
List<Hotel> list = hotelService.list();
//创建request
BulkRequest request = new BulkRequest();
for(Hotel hotel:list){
HotelDoc hotelDoc = new HotelDoc(hotel);
request.add(new IndexRequest("hotel")
.id(hotelDoc.getId().toString())
.source(JSON.toJSONString(hotelDoc),XContentType.JSON));
}
//发送请求
client.bulk(request,RequestOptions.DEFAULT);
}
查询文档
@Test
void testGetDocumentByID() throws IOException {
//准备request
GetRequest request = new GetRequest("hotel", "60916");
//发送请求
GetResponse response = client.get(request, RequestOptions.DEFAULT);
//解析响应结果
String json = response.getSourceAsString();
HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
System.out.println(hotelDoc);
}
删除文档
@Test
void testDeleteDocumentByID() throws IOException {
DeleteRequest request = new DeleteRequest("hotel","60916");
client.delete(request,RequestOptions.DEFAULT);
}
修改文档
@Test
void testUpdateDocumentByID() throws IOException {
//准备request
UpdateRequest request = new UpdateRequest("hotel","60916");
//准备请求参数
request.doc(
"price","999",
"startName","五钻"
);
//发送请求
client.update(request,RequestOptions.DEFAULT);
}