SpringBoot 整合 Elasticsearch8.0(最新API——Java API Client for Elasticsearch)—— 2、文档操作
SpringBoot 整合 Elasticsearch8.0(最新API——Java API Client for Elasticsearch)—— 2、文档操作
文档操作
1、添加文档
@SpringBootTestclass ElasticsearchStudyApplicationTests { private RestClient restClient; private ElasticsearchClient elasticsearchClient; private ElasticsearchTransport transport; @BeforeEach void ElasticsearchClientBuild(){ // Create the low-level client restClient = RestClient.builder( new HttpHost("127.0.0.1", 9200)).build(); // Create the transport with a Jackson mapper transport = new RestClientTransport( restClient, new JacksonJsonpMapper()); // And create the API client elasticsearchClient = new ElasticsearchClient(transport); } @Test void addOneDocument() throws IOException { GoodSpuElasticsearchModel goodSpuElasticsearchModel = new GoodSpuElasticsearchModel(1L, "JavaEE企业级开发", 65, "JavaEE企业级开发.png" , 1, "新华出版社", 30, "书籍"); IndexResponse indexResponse = elasticsearchClient.index(a -> a.index("good_spu").id(String.valueOf(goodSpuElasticsearchModel.getGoodSpuId())).document(goodSpuElasticsearchModel)); System.out.println("result = " + indexResponse.result().jsonValue()); } @AfterEach void ElasticsearchClientDestroy () throws IOException { transport.close(); restClient.close(); }}
运行结果:
result = created
使用 Kibana 查看文档
GET /good_spu/_doc/1
{ "_index" : "good_spu", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "goodSpuId" : 1, "goodSpuName" : "JavaEE企业级开发", "goodSpuPrice" : 65, "goodSpuPicture" : "JavaEE企业级开发.png", "goodBrandId" : 1, "goodBrandName" : "新华出版社", "goodCategoryId" : 30, "goodCategoryName" : "书籍" }}
2、查询文档
@SpringBootTestclass ElasticsearchStudyApplicationTests { private RestClient restClient; private ElasticsearchClient elasticsearchClient; private ElasticsearchTransport transport; @BeforeEach void ElasticsearchClientBuild(){ // Create the low-level client restClient = RestClient.builder( new HttpHost("127.0.0.1", 9200)).build(); // Create the transport with a Jackson mapper transport = new RestClientTransport( restClient, new JacksonJsonpMapper()); // And create the API client elasticsearchClient = new ElasticsearchClient(transport); } @Test void getDocuments() throws IOException { GetResponse getResponse = elasticsearchClient.get(a -> a.index("good_spu").id("1"), GoodSpuElasticsearchModel.class); System.out.println("result = " + getResponse.source()); } @AfterEach void ElasticsearchClientDestroy () throws IOException { transport.close(); restClient.close(); }}
运行结果:
result = GoodSpuElasticsearchModel(goodSpuId=1, goodSpuName=JavaEE企业级开发, goodSpuPrice=65, goodSpuPicture=JavaEE企业级开发.png, goodBrandId=1, goodBrandName=新华出版社, goodCategoryId=30, goodCategoryName=书籍)
3、删除文档
@SpringBootTestclass ElasticsearchStudyApplicationTests { private RestClient restClient; private ElasticsearchClient elasticsearchClient; private ElasticsearchTransport transport; @BeforeEach void ElasticsearchClientBuild(){ // Create the low-level client restClient = RestClient.builder( new HttpHost("127.0.0.1", 9200)).build(); // Create the transport with a Jackson mapper transport = new RestClientTransport( restClient, new JacksonJsonpMapper()); // And create the API client elasticsearchClient = new ElasticsearchClient(transport); } @Test void deleteOneDocument() throws IOException { DeleteResponse deleteResponse = elasticsearchClient.delete(a -> a.index("good_spu").id("1")); System.out.println("result = " + deleteResponse.result()); } @AfterEach void ElasticsearchClientDestroy () throws IOException { transport.close(); restClient.close(); }}
运行结果:
result = Deleted
4、批量添加文档
@SpringBootTestclass ElasticsearchStudyApplicationTests { private RestClient restClient; private ElasticsearchClient elasticsearchClient; private ElasticsearchTransport transport; @BeforeEach void ElasticsearchClientBuild(){ // Create the low-level client restClient = RestClient.builder( new HttpHost("127.0.0.1", 9200)).build(); // Create the transport with a Jackson mapper transport = new RestClientTransport( restClient, new JacksonJsonpMapper()); // And create the API client elasticsearchClient = new ElasticsearchClient(transport); } @Test void addDocumentList() throws IOException { List<GoodSpuElasticsearchModel> list = new ArrayList<>(); list.add(new GoodSpuElasticsearchModel(1L, "Java企业及开发", 50, "Java企业及开发.png" , 1, "新华出版社", 30, "书籍")); list.add(new GoodSpuElasticsearchModel(2L, "Java编程", 55, "Java编程.png" , 1, "新华出版社", 30, "书籍")); list.add(new GoodSpuElasticsearchModel(3L, "Java入门到精通", 70, "Java入门到精通.png" , 1, "新华出版社", 30, "书籍")); list.add(new GoodSpuElasticsearchModel(4L, "Hadoop权威指南", 110, "Hadoop权威指南" , 1, "新华出版社", 30, "书籍")); list.add(new GoodSpuElasticsearchModel(5L, "编译原理", 75, "编译原理" , 1, "新华出版社", 30, "书籍")); list.add(new GoodSpuElasticsearchModel(6L, "操作原理", 60, "操作原理" , 1, "新华出版社", 30, "书籍")); List<BulkOperation> bulkOperations = new ArrayList<>(); list.forEach(a -> bulkOperations.add(BulkOperation.of(b -> b.index(c -> c.id(String.valueOf(a.getGoodSpuId())).document(a) ) )) ); BulkResponse bulkResponse = elasticsearchClient.bulk(x -> x.index("good_spu").operations(bulkOperations)); bulkResponse.items().forEach(i -> System.out.println("i = " + i.result())); System.out.println("bulkResponse.errors() = " + bulkResponse.errors()); } @AfterEach void ElasticsearchClientDestroy () throws IOException { transport.close(); restClient.close(); }}
运行结果:
i = createdi = createdi = createdi = createdi = createdi = createdbulkResponse.errors() = false
使用 Kibana 查看文档
GET good_spu/_search{ "query": { "match_all": {} }}
{ "took" : 2, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 6, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "good_spu", "_id" : "1", "_score" : 1.0, "_source" : { "goodSpuId" : 1, "goodSpuName" : "JavaEE企业级开发", "goodSpuPrice" : 65, "goodSpuPicture" : "JavaEE企业级开发.png", "goodBrandId" : 1, "goodBrandName" : "新华出版社", "goodCategoryId" : 30, "goodCategoryName" : "书籍" } }, { "_index" : "good_spu", "_id" : "2", "_score" : 1.0, "_source" : { "goodSpuId" : 2, "goodSpuName" : "Java编程", "goodSpuPrice" : 55, "goodSpuPicture" : "Java编程.png", "goodBrandId" : 1, "goodBrandName" : "新华出版社", "goodCategoryId" : 30, "goodCategoryName" : "书籍" } }, { "_index" : "good_spu", "_id" : "3", "_score" : 1.0, "_source" : { "goodSpuId" : 3, "goodSpuName" : "Java入门到精通", "goodSpuPrice" : 70, "goodSpuPicture" : "Java入门到精通.png", "goodBrandId" : 1, "goodBrandName" : "新华出版社", "goodCategoryId" : 30, "goodCategoryName" : "书籍" } }, { "_index" : "good_spu", "_id" : "4", "_score" : 1.0, "_source" : { "goodSpuId" : 4, "goodSpuName" : "Hadoop权威指南", "goodSpuPrice" : 110, "goodSpuPicture" : "Hadoop权威指南", "goodBrandId" : 1, "goodBrandName" : "新华出版社", "goodCategoryId" : 30, "goodCategoryName" : "书籍" } }, { "_index" : "good_spu", "_id" : "5", "_score" : 1.0, "_source" : { "goodSpuId" : 5, "goodSpuName" : "编译原理", "goodSpuPrice" : 75, "goodSpuPicture" : "编译原理", "goodBrandId" : 1, "goodBrandName" : "新华出版社", "goodCategoryId" : 30, "goodCategoryName" : "书籍" } }, { "_index" : "good_spu", "_id" : "6", "_score" : 1.0, "_source" : { "goodSpuId" : 6, "goodSpuName" : "操作原理", "goodSpuPrice" : 60, "goodSpuPicture" : "操作原理", "goodBrandId" : 1, "goodBrandName" : "新华出版社", "goodCategoryId" : 30, "goodCategoryName" : "书籍" } } ] }}
批量添加文档成功
4、批量删除文档
@SpringBootTestclass ElasticsearchStudyApplicationTests { private RestClient restClient; private ElasticsearchClient elasticsearchClient; private ElasticsearchTransport transport; @BeforeEach void ElasticsearchClientBuild(){ // Create the low-level client restClient = RestClient.builder( new HttpHost("127.0.0.1", 9200)).build(); // Create the transport with a Jackson mapper transport = new RestClientTransport( restClient, new JacksonJsonpMapper()); // And create the API client elasticsearchClient = new ElasticsearchClient(transport); } @Test void deleteDocumentList() throws IOException { List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); list.add("6"); List<BulkOperation> bulkOperations = new ArrayList<>(); list.forEach(a -> bulkOperations.add(BulkOperation.of(b -> b.delete(c -> c.id(a)) )) ); BulkResponse bulkResponse = elasticsearchClient.bulk(a -> a.index("good_spu").operations(bulkOperations)); bulkResponse.items().forEach(a -> System.out.println("result = " + a.result())); System.out.println("bulkResponse.errors() = " + bulkResponse.errors()); } @AfterEach void ElasticsearchClientDestroy () throws IOException { transport.close(); restClient.close(); }}
运行结果:
result = deletedresult = deletedresult = deletedresult = deletedresult = deletedresult = deletedbulkResponse.errors() = false
使用 Kibana 查看文档
GET good_spu/_search{ "query": { "match_all": {} }}
{ "took" : 433, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 0, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }}
批量删除文档成功
上一篇:SpringBoot 整合 Elasticsearch8.0(最新API——Java API Client for Elasticsearch)—— 1、索引操作