目录
- 1. 客户端依赖
- 2. 配置
- 3. API
- 3.1 索引
- 3.1.1 创建索引
- 3.1.2 判断索引是否存在
- 3.1.3 删除索引
- 3.2 文档
- 3.2.1 创建文档
- 3.2.2 判断文档是否存在
- 3.2.3 获取文档内容
- 3.2.4 更新文档
- 3.2.5 删除文档
- 3.2.6 批量插入
- 3.2.7 搜索
注:这里的客户端使用的是RestClient,没有使用spring-boot-starter-data-elasticsearch 【SpringBoot集成ElasticSearch使用】
1. 客户端依赖
7.6.2
org.elasticsearch.client
elasticsearch-rest-high-level-client
${elasticsearch.version}
2. 配置
@Configuration
public class Config {@Bean
public RestHighLevelClient restHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
return client;
}
}
3. API 3.1 索引 3.1.1 创建索引
@SpringBootTest(classes = {EsDemo1Application.class})
@RunWith(SpringRunner.class)
public class EsDemo1ApplicationTests {@Autowired
@Qualifier("restHighLevelClient")
private RestHighLevelClient client;
@Test
public void test1() {
System.out.println(client);
}/**
* 创建索引
*
* @throws IOException
*/
@Test
public void test2() throws IOException {
CreateIndexRequest request = new CreateIndexRequest("springboot_index_test");
client.indices().create(request, RequestOptions.DEFAULT);
} @After
public void after() {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.1.2 判断索引是否存在
/**
* 判断索引是否存在
*/
@Test
public void test4() throws IOException {
GetIndexRequest request = new GetIndexRequest("springboot_index_test");
boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}
3.1.3 删除索引
/**
* 删除索引
*/
@Test
public void test3() throws IOException {
DeleteIndexRequest delete = new DeleteIndexRequest("springboot_index_test");
AcknowledgedResponse response = client.indices().delete(delete, RequestOptions.DEFAULT);
System.out.println(response.isAcknowledged());
}
3.2 文档 3.2.1 创建文档
/**
* 创建文档
*/
@Test
public void test5() throws IOException {
Student student = new Student("李四", 22);
IndexRequest request = new IndexRequest("springboot_index_test");
request.id(2 + "");
request.source(JSONObject.toJSONString(student), XContentType.JSON);
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
System.out.println(response.toString());
System.out.println(response.status());
}
3.2.2 判断文档是否存在
/**
* 判断文档是否存在
*
* @throws IOException
*/
@Test
public void test6() throws IOException {
//GetRequest request = new GetRequest("springboot_index_test");
//request.id("2");
GetRequest request = new GetRequest("springboot_index_test", "1");
// 不获取上下文 _source
request.fetchSourceContext(new FetchSourceContext(false));
boolean exists = client.exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}
3.2.3 获取文档内容
/**
* 获取文档内容
*/
@Test
public void test7() throws IOException {
GetRequest request = new GetRequest("springboot_index_test", 1 + "");
GetResponse response = client.get(request, RequestOptions.DEFAULT);
System.out.println(response.getSourceAsString());
System.out.println(response.toString());
}
3.2.4 更新文档
/**
* 更新文档
*
* @throws IOException
*/
@Test
public void test8() throws IOException {
UpdateRequest request = new UpdateRequest("springboot_index_test", 1 + "");
GetRequest get = new GetRequest("springboot_index_test", 1 + "");
GetResponse response = client.get(get, RequestOptions.DEFAULT);
Student student = JSONObject.parseObject(response.getSourceAsString(), Student.class);
student.setAge(101);
request.doc(JSONObject.toJSONString(student), XContentType.JSON);
UpdateResponse updateResponse = client.update(request, RequestOptions.DEFAULT);
System.out.println(updateResponse.status());
}
3.2.5 删除文档
/**
* 删除文档
*
* @throws IOException
*/
@Test
public void test9() throws IOException {
DeleteRequest deleteRequest = new DeleteRequest("springboot_index_test", 2 + "");
DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);
System.out.println(deleteResponse.status());
}
3.2.6 批量插入
/**
* 批量插入
*/
@Test
public void test10() throws IOException {
Student student1 = new Student("test1", 1);
Student student2 = new Student("test2", 2);
Student student3 = new Student("test3", 3);
Student student4 = new Student("test4", 4);
Student student5 = new Student("test5", 5);
ArrayList> studentList = new ArrayList<>();
studentList.add(student1);
studentList.add(student2);
studentList.add(student3);
studentList.add(student4);
studentList.add(student5);
BulkRequest bulkRequest = new BulkRequest("springboot_index_test");
for (int i = 0;
i < studentList.size();
i++) {
bulkRequest.add(new IndexRequest()
.id(i + "")
.source(JSONObject.toJSONString(studentList.get(i)), XContentType.JSON)
);
}
// 超时时间
bulkRequest.timeout(new TimeValue(10, TimeUnit.SECONDS));
BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulkResponse.status());
}
3.2.7 搜索
/**
* 查询
*/
@Test
public void search() throws IOException {
SearchRequest searchRequest = new SearchRequest("springboot_index_test");
// 构建搜索条件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 排序
searchSourceBuilder.sort("age", SortOrder.DESC);
// 高亮
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.field("name");
highlightBuilder.preTags("");
highlightBuilder.postTags("");
searchSourceBuilder.highlighter(highlightBuilder);
// 查询构造器 查询条件
MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("name", "test1");
searchSourceBuilder.query(matchQueryBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
for (SearchHit searchHit :
hits) {
System.out.println(searchHit.getSourceAsMap());
}
}
推荐阅读
- Elasticsearch|Elasticsearch 简介
- elastic-search 部署和应用「详细」
- ElasticSearch-Logstash6.0.0安装以及mysql数据导入ES
- ElasticSearche导入样本数据官网链接
- ElasticSearch笔记01
- ElasticStack|黑马Elastic stack学习笔记
- JAVA开发|java调用go、js、python、groovy和Caffeine缓存
- ElasticSearch之docker集群搭建
- Elastcsearch 常用搜索命令