这篇文章,主要介绍SpringBoot如何操作ES数据库中的index索引(创建、删除、获取)。
目录
一、SpringBoot操作ES索引
1.1、创建索引
1.2、删除索引
1.3、获取索引
1.4、判断索引是否存在
一、SpringBoot操作ES索引
ES的高级客户端中,提供了一个【indices()】方法,这个方法可以获取一个专门用于操作index索引的API。
// 获取索引客户端
IndicesClient indicesClient = highRestClient.indices();
1.1、创建索引
ES创建索引,需要创建一个索引的请求对象【CreateIndexRequest】,创建索引的时候,需要指定索引的名称,可以通过构造方法指定索引名称,并且ES中的每一个API几乎都提供了一个RequestOptions配置项参数,通过这个参数可以设置这次HTTP请求的相关参数。如果不想设置,也可以采用默认的配置项,只需要通过【RequestOptions.DEFAULT】获取即可。
注意:当索引已经存在的时候,再次创建索引就会抛出一个异常。
package com.spring.boot.demo.controller;
import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
/**
* @author ZhuYouBin
* @version 1.0.0
* @Date: 2022/11/19 22:24
* @Description ES 测试类
*/
@RestController
@RequestMapping("/api/es")
public class TestController {
@Autowired
private RestHighLevelClient highRestClient;
@GetMapping("/createIndex")
public String createIndex(String indexName) throws IOException {
// 获取索引客户端
IndicesClient indicesClient = highRestClient.indices();
// 创建索引请求对象: 传入一个索引名称
CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName);
// 执行创建索引的请求
// RequestOptions.DEFAULT 指定名称的配置项
CreateIndexResponse response = indicesClient.create(createIndexRequest, RequestOptions.DEFAULT);
// 获取响应信息
String index = response.index();
System.out.println("索引名称: " + index);
// 索引是否创建成功
boolean acknowledged = response.isAcknowledged();
System.out.println("索引是否创建成功: " + acknowledged);
return "success.";
}
}
1.2、删除索引
ES删除索引,可以通过【DeleteIndexRequest】请求指定要删除的索引名称,可以同时删除多个索引。
注意:当索引不存在的时候,删除不存在的索引会抛出异常。
package com.spring.boot.demo.controller;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.support.master.AcknowledgedResponse;
import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
/**
* @author ZhuYouBin
* @version 1.0.0
* @Date: 2022/11/19 22:24
* @Description ES 测试类
*/
@RestController
@RequestMapping("/api/es")
public class TestController {
@Autowired
private RestHighLevelClient highRestClient;
@GetMapping("/deleteIndex")
public String deleteIndex() throws IOException {
// 获取索引客户端
IndicesClient indicesClient = highRestClient.indices();
// 创建删除索引的请求
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("idx_name_2022");
// 创建执行删除索引的请求
// RequestOptions.DEFAULT 指定名称的配置项
AcknowledgedResponse response = indicesClient.delete(deleteIndexRequest, RequestOptions.DEFAULT);
// 索引是否创建成功
boolean acknowledged = response.isAcknowledged();
System.out.println("索引是否删除成功: " + acknowledged);
return "success.";
}
}
1.3、获取索引
获取索引需要创建一个【GetIndexRequest】对象,该对象构造方法可以传递需要查询的索引名称,可以传递多个索引名称。
注意:如果查询的索引不存在,那么就会抛出一个索引不存在的异常ElasticsearchStatusException。
package com.spring.boot.demo.controller;
import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.GetIndexResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
/**
* @author ZhuYouBin
* @version 1.0.0
* @Date: 2022/11/19 22:24
* @Description ES 测试类
*/
@RestController
@RequestMapping("/api/es")
public class TestController {
@Autowired
private RestHighLevelClient highRestClient;
@GetMapping("/getIndex")
public String getIndex() throws IOException {
// 获取索引客户端
IndicesClient indicesClient = highRestClient.indices();
// 创建获取索引的请求对象
// 当索引不存在的时候,就会抛出一个异常: ElasticsearchStatusException
GetIndexRequest getIndexRequest = new GetIndexRequest("idx_name_2021", "idx_name_2022");
// 执行请求
// RequestOptions.DEFAULT 指定名称的配置项
GetIndexResponse response = indicesClient.get(getIndexRequest, RequestOptions.DEFAULT);
// 处理响应信息
String[] indices = response.getIndices();
for (String index : indices) {
System.out.println("索引名称是: " + index);
}
return "success.";
}
}
运行结果如下所示:
1.4、判断索引是否存在
上面查询索引的时候,如果索引不存在,就会抛出异常,为了避免出现异常,我们可以首先判断一下索引是否存在,如果存在则继续执行相关操作,否则创建新索引、或者给出提示信息之类的。
可以通过调用【exists()】方法判断某个索引是否存在,该方法返回的是一个boolean类型的值。
注意:当判断多个索引的时候,所有的索引都存在,才会返回true,否则返回false。
package com.spring.boot.demo.controller;
import org.elasticsearch.client.IndicesClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
/**
* @author ZhuYouBin
* @version 1.0.0
* @Date: 2022/11/19 22:24
* @Description ES 测试类
*/
@RestController
@RequestMapping("/api/es")
public class TestController {
@Autowired
private RestHighLevelClient highRestClient;
@GetMapping("/existsIndex")
public String existsIndex() throws IOException {
// 获取索引客户端
IndicesClient indicesClient = highRestClient.indices();
// 创建获取索引的请求对象
// 当索引不存在的时候,就会抛出一个异常: ElasticsearchStatusException
GetIndexRequest getIndexRequest = new GetIndexRequest("idx_name_2021", "idx_name_2022");
// 执行请求
// RequestOptions.DEFAULT 指定名称的配置项
boolean exists = indicesClient.exists(getIndexRequest, RequestOptions.DEFAULT);
if (exists) {
// 索引都存在
return "index exists.";
}
// 索引不存在
return "index does not exists.";
}
}
到此,SpringBoot操作ES数据库索引index就介绍完啦。
综上,这篇文章结束了,主要介绍SpringBoot如何操作ES数据库中的index索引(创建、删除、获取)。