文章目录
- Springboot整合Elasticsearch
- 索引操作API
- 文档操作API
Springboot整合Elasticsearch
Springboot整合Elasticsearch只需要引入完成以下两步操作
- 引入依赖:spring-boot-starter-data-elasticsearch
- 在属性中修改<elasticsearch.version>标签,将版本改为与elasticsearch服务器相同的版本即可
- 自定义配置类引入es高级客户端
自定义配置类引入es高级客户端
@Configuration
public class ElasticSearchClientConfig {
@Bean
public RestHighLevelClient restHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1", 9200, "http")));
return client;
}
}
索引操作API
@SpringBootTest
class EsIndexTests {
@Autowired
private RestHighLevelClient restHighLevelClient;
@Test
void testCreateIndex() throws Exception {
CreateIndexRequest request = new CreateIndexRequest("yang_index");
CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
System.out.println(createIndexResponse);
}
@Test
void testExistIndex() throws Exception {
GetIndexRequest request = new GetIndexRequest("yang_index");
boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}
@Test
void testDeleteIndex() throws Exception {
DeleteIndexRequest request = new DeleteIndexRequest("yang_index");
AcknowledgedResponse response = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
System.out.println(response.isAcknowledged());
}
}
文档操作API
@SpringBootTest
public class EsDocumentTests {
@Autowired
private RestHighLevelClient restHighLevelClient;
@Test
void testAddDocument() throws Exception {
User user = new User("yang", 15);
IndexRequest request = new IndexRequest("yang_index");
request.id("2");
request.timeout(TimeValue.timeValueSeconds(1));
request.source(JSON.toJSONString(user), XContentType.JSON);
IndexResponse response = restHighLevelClient.index(request, RequestOptions.DEFAULT);
System.out.println(response.status());
}
@Test
void testAddBatchDocument() throws Exception {
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout(TimeValue.timeValueSeconds(10));
ArrayList<User> users = new ArrayList<>();
users.add(new User("yang1", 21));
users.add(new User("yang2", 22));
users.add(new User("yang3", 23));
users.add(new User("yang4", 24));
users.add(new User("yang5", 25));
for (int i = 0; i < users.size(); i++) {
bulkRequest.add(
new IndexRequest("yang_index")
.id("" + (i+1))
.source(JSON.toJSONString(users.get(i)), XContentType.JSON)
);
}
BulkResponse response = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(response.hasFailures());
}
@Test
void testDocumentIsExists() throws Exception {
GetRequest getRequest = new GetRequest("yang_index", "1");
boolean exists = restHighLevelClient.exists(getRequest, RequestOptions.DEFAULT);
System.out.println(exists);
}
@Test
void testGetDocument() throws Exception {
GetRequest getRequest = new GetRequest("yang_index", "1");
GetResponse document = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
String source = document.getSourceAsString();
System.out.println(source);
}
@Test
void testUpdateDocument() throws Exception {
UpdateRequest updateRequest = new UpdateRequest("yang_index", "1");
updateRequest.timeout(TimeValue.timeValueSeconds(1));
User user = new User();
user.setName("yang_111");
updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);
UpdateResponse response = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
System.out.println(response.status());
}
@Test
void testDeleteDocument() throws Exception {
DeleteRequest request = new DeleteRequest("yang_index","1");
request.timeout(TimeValue.timeValueSeconds(1));
DeleteResponse response = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
System.out.println(response.status());
}
@Test
void testQueryDocument() throws Exception {
SearchRequest searchRequest = new SearchRequest("yang_index");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "yang");
sourceBuilder.query(termQueryBuilder)
.timeout(TimeValue.timeValueSeconds(100));
searchRequest.source(sourceBuilder);
SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
for (SearchHit hit : response.getHits()) {
System.out.println(hit.getSourceAsString());
}
}
}