日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

用SpringBoot整合ES数据库基础

發布時間:2024/3/13 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用SpringBoot整合ES数据库基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、SpringBoot整合ES數據庫

1、配置原生的依賴。

<properties><java.version>1.8</java.version><!-- 自己定義es版本依賴,保證和本地- -致--><elasticsearch.version>7.6.2</elasticsearch.version> </properties> <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- JODA Time --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.5</version></dependency><!-- ELasticsearch --><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>7.6.2</version><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><!-- required by elasticsearch --><groupId>org.elasticsearch.plugin</groupId><artifactId>transport-netty4-client</artifactId><version>7.6.2</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><version>2.3.3.RELEASE</version></dependency> </dependencies> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins> </build>

2、構建對象。

RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"),new HttpHost("localhost", 9201, "http"))); //記得關閉 client.close();

3、分析對應的方法。


@Controller 控制器(注入服務)
用于標注控制層,相當于struts中的action層
@Service 服務(注入dao)
用于標注服務層,主要用來進行業務的邏輯處理
@Repository(實現dao訪問)
用于標注數據訪問層,也可以說用于標注數據訪問組件,即DAO組件
@Component (把普通pojo實例化到spring容器中,相當于配置文件中的 )
泛指各種組件,就是說當我們的類不屬于各種歸類的時候(不屬于@Controller、@Services等的時候),我們就可以使用@Component來標注這個類。

  • @Data : 注解在類上, 為類提供讀寫屬性, 此外還提供了 equals()、hashCode()、toString() 方法

  • @Getter/@Setter : 注解在類上, 為類提供讀寫屬性

  • @ToString : 注解在類上, 為類提供 toString() 方法

  • @Slf4j : 注解在類上, 為類提供一個屬性名為 log 的 log4j 的日志對象

  • @Log4j : 注解在類上, 為類提供一個屬性名為 log 的 log4j 的日志對象


    3、構建實體類和測試類

    //User類 @Data @Component public class User {private String name;private int age;public User() {}public User(String name, int age) {this.name = name;this.age = age;} }//測試程序 package com.www.es.springboot.demo;import com.alibaba.fastjson.JSON; import com.www.es.springboot.demo.pojo.User; import com.www.es.springboot.demo.utils.ESconst; import org.elasticsearch.action.DocWriteRequest; import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.client.indices.CreateIndexResponse; import org.elasticsearch.client.indices.GetIndexRequest; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.query.MatchAllQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.TermQueryBuilder; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.fetch.subphase.FetchSourceContext; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest;import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.concurrent.TimeUnit;@SpringBootTest class DemoApplicationTests {@Autowiredprivate RestHighLevelClient restHighLevelClient;//面向對象來操作@Autowired@Qualifier("restHighLevelClient" )private RestHighLevelClient client;//測試索引的創建Request@Testvoid testCreateIndex() throws IOException {// 1、創建索引請求CreateIndexRequest request = new CreateIndexRequest("index1" );// 2、客戶端執行請求IndicesClient,請求后獲得響應CreateIndexResponse createIndexResponse =client.indices().create(request, RequestOptions.DEFAULT);System.out.println(createIndexResponse);}//測試獲取索引@Testvoid testExistIndex() throws IOException {GetIndexRequest request = new GetIndexRequest( "index");boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);System.out.println(exists);}//測試刪除索引@Testvoid testDeleteIndex() throws IOException {DeleteIndexRequest request = new DeleteIndexRequest("index1");//刪尉AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);System.out.println(delete.isAcknowledged());}//測試添加文檔@Testvoid testAddDocument() throws IOException {User user = new User("唐三藏",25);//創建請求IndexRequest indexRequest = new IndexRequest("index");indexRequest.id("1");indexRequest.timeout(TimeValue.timeValueSeconds(1));indexRequest.timeout("1s");//將我們的數據放入請求indexRequest.source(JSON.toJSONString(user), XContentType.JSON);//客戶端發送請求IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);//獲取響應的結果System.out.println(indexResponse.toString());System.out.println(indexResponse.status());}//獲取文檔,判斷是否存在get /index/doc/@Testvoid testIsExists() throws IOException {GetRequest getRequest = new GetRequest( "index", "1");//不獲取返回的_ source 的上下文了//getRequest.fetchSourceContext (new FetchSourceContext(false));//getRequest.storedFields("_none_");boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);System.out.println(exists);GetResponse getResponse = client.get(getRequest,RequestOptions.DEFAULT);System.out.println(getResponse .getSourceAsString()); //打印文檔的內容System.out.println(getResponse);}//獲取文檔的信息@Testvoid testGetDocuments() throws IOException {GetRequest getRequest = new GetRequest( "index", "1");GetResponse getResponse = client.get(getRequest,RequestOptions.DEFAULT);System.out.println(getResponse.getSourceAsString()); //打印文檔的內容System.out.println(getResponse);}//更新文檔的信息@Testvoid testUpdateDocuments() throws IOException {UpdateRequest updateRequest = new UpdateRequest("index", "2");updateRequest.timeout("1s");User user = new User("殺阡陌", 18);UpdateRequest doc = updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);System.out.println(doc);System.out.println(updateResponse.status());System.out.println(updateResponse);}//刪除文檔信息@Testvoid testDeleteDocuments() throws IOException {DeleteRequest deleteRequest = new DeleteRequest("index", "2");deleteRequest.timeout("1s");DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);System.out.println(deleteResponse.status());System.out.println(deleteRequest);}// 特殊的,真的項目一般都會批量插入數據!@Testvoid testBulkRequest() throws IOException {BulkRequest bulkRequest = new BulkRequest();bulkRequest.timeout("10s");ArrayList<User> userList = new ArrayList<>();userList.add(new User("木sd1",3));userList.add(new User("木s2",4));userList.add(new User("木d3",5));userList.add(new User("木e4",6));userList.add(new User("木m5",7));userList.add(new User("木g6",8));userList.add(new User("木x7",9));// 用下迭代器/*for(int i = 0 ; i < userList.size();i++){bulkRequest.add(new IndexRequest("index").id(""+(i+1)).source(JSON.toJSONString(userList.get(i)), XContentType.JSON));}*/for(Iterator<User> user = userList.iterator(); user.hasNext();){System.out.println(user);/*System.out.println(user.next().getClass().getName());System.out.println(user.next());*/bulkRequest.add(new IndexRequest("index").source(JSON.toJSONString(user.next()), XContentType.JSON));}BulkResponse bulkItemResponses = client.bulk(bulkRequest, RequestOptions.DEFAULT);System.out.println(bulkItemResponses.hasFailures());}// 搜索查詢// SearchRequest搜索請求// SearchSourceBuiLder條件構造// HighlightBuiLder構建高亮// TermQueryBuilder精確查詢// MatchAlLQueryBuiLder// xxx QueryBuilder對應我們剛才看到的命令!@Testvoid testSearch() throws IOException {SearchRequest searchRequest = new SearchRequest(ESconst.ES_DATA_INDEX);//構建搜索條件SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();final HighlightBuilder highlightBuilder = new HighlightBuilder();SearchSourceBuilder highlighter = sourceBuilder.highlighter(highlightBuilder);System.out.println(highlighter);// 查詢條件,我們可以使用 QueryBuilders 工具來實現// QueryBuilders.termQuery精確// QueryBuilders.matchAllQuery()匹配所有TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", "3");MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();//sourceBuilder.query(termQueryBuilder);sourceBuilder.query(matchAllQueryBuilder);searchRequest.source(sourceBuilder);sourceBuilder.timeout(new TimeValue(120, TimeUnit.SECONDS));SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);System.out.println(JSON.toJSONString(searchResponse.getHits().getHits()));System.out.println("=========================");for(SearchHit documentFields:searchResponse.getHits().getHits()){System.out.println(documentFields.getSourceAsMap());}} }

總結

以上是生活随笔為你收集整理的用SpringBoot整合ES数据库基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。