中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用springboot如何實現集成es

發布時間:2020-11-04 14:19:54 來源:億速云 閱讀:745 作者:Leah 欄目:開發技術

這篇文章運用簡單易懂的例子給大家介紹使用springboot如何實現集成es,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1.導入 maven依賴

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-dataelasticsearch</artifactId>
<dependency>

注意 保持版本一致 我用的是7.6.2版本的

<properties>
      <java.version>1.8</java.version>
       <elasticsearch.version>7.6.2</elasticsearch.version>
     <!--自定義版本 保持版本一致-->
    </properties>

2.編寫config類 相當于 xlm導入文檔

@Configuration
public class ESConfig {

  @Bean
  public RestHighLevelClient restHighLevelClient (){
    RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
        RestClient.builder(
            new HttpHost("localhost",9100,"http")
        )
    );
    return restHighLevelClient;
  }

注意這里的端口號 一定不能搞錯

3測試書寫 添加 索引

@Test
  void contextLoads() throws IOException {

    //1.創建索引的請求
    CreateIndexRequest createIndexRequest = new CreateIndexRequest("mao");
    //2.執行請求 獲得響應
    CreateIndexResponse createIndexResponse = estHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
    System.out.println(createIndexResponse);
  }

4.查詢索引是否存在

@Test //查詢索引是否存在
  void existIndex() throws IOException {
    GetIndexRequest getIndexRequest = new GetIndexRequest("test"); //獲得索引請求
    boolean exists = estHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
    System.out.println(exists);
  }

5.刪除索引

@Test//刪除
  void delIndex() throws IOException {
    DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("test");
    AcknowledgedResponse delete = estHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
    System.out.println(delete);
    System.out.println(delete.isAcknowledged());
  }

6.添加文檔數據 第一 要設置實體類 導入阿里巴巴JSON 工具類

 @Data
@Accessors(chain = true) //實體類

public class User {
  private String name;
  private String age;
}
@Test //添加文檔
  void addDocument() throws IOException {
    //創建對象啊
    User user = new User().setAge("13").setName("mao");
    //創建請求
    IndexRequest request = new IndexRequest("mao");
    //設置規則 PUT /test/_doc/id
    request.id("1");
    request.timeout("1s");
    //將請求放入josn
    request.source(JSON.toJSONString(user),XContentType.JSON);
    //客戶端發送請求
    IndexResponse index = estHighLevelClient.index(request, RequestOptions.DEFAULT);
    //獲取響應結果
    System.out.println(index.toString());
    System.out.println(index.status());
 <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.47</version>
    </dependency>

7.修改文檔

@Test //Update 文檔操作
  void GengXin() throws IOException {
    UpdateRequest updateRequest = new UpdateRequest("mao","1"); //請求更新文檔
    updateRequest.timeout("1s"); //設置超時時間
    User user= new User().setName("張三").setAge("26");
    updateRequest.doc(JSON.toJSONString(user),XContentType.JSON); //將對象封裝丟進去 XContentType方法 將要傳輸的數據進行告知
    UpdateResponse update = estHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);//發送請求
    System.out.println(update);
  }

8.批量增加

@Test //批量丟入數據
  void TestBulkIndexRequest() throws IOException {
    BulkRequest bulkRequest = new BulkRequest(); //大批量導入數據 本質是for循環
    bulkRequest.timeout("10s");
    ArrayList<User> users = new ArrayList<>();
    for(int i=0;i<10;i++){
      users.add(new User().setName("張三"+i+"號").setAge(""+i));
    }

    //批處理請求
    for(int i =0;i<users.size();i++){
      bulkRequest.add(
          new IndexRequest("mao")
          .id(""+(i+1))
          .source(JSON.toJSONString(users.get(i)),XContentType.JSON)
      );

    }
    BulkResponse bulk = estHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
    System.out.println(bulk);
    System.out.println(bulk.hasFailures());//查詢是否失敗

  }

9.精確查詢

 @Test//查詢
  void testSearch() throws IOException {
    SearchRequest searchRequest = new SearchRequest(ESConstant.ESConstant);
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    //精確查詢條件


    TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", "0");
    //查詢所有
//    MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
     searchSourceBuilder.query(termQueryBuilder) ;//將規則加入
//     searchSourceBuilder.from(); //設置分頁
//     searchSourceBuilder.size();
     searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));//設置高并發下的延遲時間
     searchSourceBuilder.highlighter();
     searchRequest.source(searchSourceBuilder);//將剛剛做的請求體放入
    SearchResponse search = estHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//請求信息
    System.out.println(JSON.toJSONString(search.getHits()));//返回查詢情況 getHits 封裝返回對象

    for( SearchHit SearchHit:search.getHits().getHits() ){
      System.out.println(SearchHit.getSourceAsMap());

    }
  } 

關于使用springboot如何實現集成es就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

郴州市| 资源县| 永顺县| 房山区| 都匀市| 革吉县| 安福县| 开原市| 石家庄市| 大港区| 融水| 汕头市| 驻马店市| 青阳县| 五台县| 哈巴河县| 马尔康县| 萨迦县| 郎溪县| 广东省| 石阡县| 托克托县| 太白县| 泾川县| 札达县| 吴忠市| 毕节市| 师宗县| 荔波县| 安龙县| 屏南县| 瑞昌市| 同江市| 延庆县| 东源县| 南通市| 安平县| 璧山县| 建平县| 永平县| 抚顺市|