国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElasticSearch之RestClient操作索引庫和文檔

這篇具有很好參考價值的文章主要介紹了ElasticSearch之RestClient操作索引庫和文檔。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:上文介紹了使用DSL語言操作索引庫和文檔,本篇文章將介紹使用Java中的RestClient來對索引庫和文檔進行操作。
希望能夠加深自己的印象以及幫助到其他的小伙伴兒們????。
如果文章有什么需要改進的地方還請大佬不吝賜教????。
小威在此先感謝各位大佬啦~~????

ElasticSearch之RestClient操作索引庫和文檔

??個人主頁:小威要向諸佬學習呀
??個人簡介:大家好,我是小威,一個想要與大家共同進步的男人????
目前狀況??:24屆畢業(yè)生,曾經(jīng)在某央企公司實習,目前在某稅務(wù)公司實習????

??歡迎大家:這里是CSDN,我總結(jié)知識的地方,歡迎來到我的博客,我親愛的大佬??

以下正文開始
ElasticSearch之RestClient操作索引庫和文檔


ElasticSearch之RestClient操作索引庫和文檔

好,那就詳細記錄下這塊的知識。

前面記錄了在網(wǎng)頁端使用DSL語句對Elasticsearch的索引庫和文檔進行增刪改查的簡單操作。但是在日常的開發(fā)工作中,還是用Java語言操作比較多,因此需要使用Elasticsearch官方提供的RestClient操作索引庫和文檔。
ElasticSearch之RestClient操作索引庫和文檔

首先準備一個索引庫名為hotel的庫并分析其中字段的數(shù)據(jù)結(jié)構(gòu),然后根據(jù)字段的名稱,數(shù)據(jù)類型,是否參與搜索,是否分詞,分詞器等條件來完善其mapping,在其內(nèi)部定義了一個名為“all”字段的屬性,這個字段目的是將其他同時參與搜索的字段cope_to在一起,搜索的時候根據(jù)“all”字段內(nèi)的查詢條件一起搜索,可以提高搜索效率:

PUT /hotel
{
  "mappings": {
    "properties": {
      "id":{
        "type": "keyword"
      },
      "name":{
        "type": "text",
        "analyzer": "ik_max_word",
        "copy_to": "all"
      },
      "address":{
        "type": "keyword",
        "index": false
      },
      "price":{
        "type": "integer"
      },
      "score":{
        "type": "integer"
      },
      "brand":{
        "type": "keyword",
        "copy_to": "all"
      },
      "city":{
        "type":"keyword"
      },
      "starName":{
        "type": "keyword"
      },
      "business":{
        "type": "keyword"
        , "copy_to": "all"
      },
      "location":{
        "type": "geo_point"
      },
      "pic":{
        "type": "keyword",
        "index": false
      },
       "all":{
        "type": "text",
        "analyzer": "ik_max_word"
      }
      }
  }
}

那么,如何在idea中操作對索引庫和文檔進行操作呢?

倘若我們想要使用RestClient來操作,首要任務(wù)就是引入其依賴:

        <!--elasticsearch-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
        </dependency>

第二步,在測試類中編寫測試方法,我們需要創(chuàng)建RestClient對象,然后對RestClient進行初始化,當然創(chuàng)建完成RestClient后需要銷毀,代碼如下:

    private RestHighLevelClient client;
    @BeforeEach //創(chuàng)建對象初始化
    void setUp() {
        client = new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://192.168.220.***:9200") //創(chuàng)建方法
        ));
    }
    @AfterEach //創(chuàng)建完成后銷毀
    void tearDown() throws IOException {
        client.close();
    }

ElasticSearch之RestClient操作索引庫和文檔

RestClient操作索引庫

創(chuàng)建索引庫

這里的創(chuàng)建索引庫方法和我們上面DSL語句的含義是一樣的,雖然描述方式有所不同。

  • 第一行代碼創(chuàng)建索引庫,相當于DSL語句中的PUT /hotel
  • 第二行代碼準備請求參數(shù),MAPPING_TEMPLATE為創(chuàng)建DSL語句中的內(nèi)容(除去PUT /hotel那些)
  • 第三步調(diào)用client的indices()拿到操作索引庫的所有方法,然后取出create方法
    @Test
    void testCreateIndex() throws IOException {
        // 1.準備Request      PUT /hotel
        CreateIndexRequest request = new CreateIndexRequest("hotel");
        // 2.準備請求參數(shù)
        request.source(MAPPING_TEMPLATE, XContentType.JSON);//這里將DSL語句封裝成了MAPPING_TEMPLATE,優(yōu)雅美觀
        // 3.發(fā)送請求
        client.indices().create(request, RequestOptions.DEFAULT);
    }

可以進入indices方法的源碼,查看得返回的是indicesClient,如下:

public final IndicesClient indices() {
    return this.indicesClient;
}

delete的方法的源碼,由此可見上面?zhèn)魅雛equest請求即可:

public final class IndicesClient {
    private final RestHighLevelClient restHighLevelClient;

    IndicesClient(RestHighLevelClient restHighLevelClient) {
        this.restHighLevelClient = restHighLevelClient;
    }
    
    public AcknowledgedResponse delete(DeleteIndexRequest deleteIndexRequest, RequestOptions options) throws IOException {
        return restHighLevelClient.performRequestAndParseEntity(deleteIndexRequest, IndicesRequestConverters::deleteIndex, options,
            AcknowledgedResponse::fromXContent, emptySet());
    }
}

刪除索引庫

根據(jù)以上信息,我們不難得出使用RestClient刪除索引庫和判斷索引庫是否存在的相關(guān)代碼:

    @Test //判斷索引庫是否存在
    void testExistsIndex() throws IOException {
        // 1.準備Request,注意這塊是獲取索引庫請求而不是創(chuàng)建
        GetIndexRequest request = new GetIndexRequest("hotel");
        // 3.發(fā)送請求,調(diào)用exists方法
        boolean isExists = client.indices().exists(request, RequestOptions.DEFAULT);
        System.err.println(isExists ? "索引庫存在" : "索引庫不存在");
    }
    
    @Test  //刪除索引庫操作
    void testDeleteIndex() throws IOException {
        // 1.準備Request,指定刪除哪個索引庫
        DeleteIndexRequest request = new DeleteIndexRequest("hotel"); 
        // 3.發(fā)送請求,調(diào)用delete方法
        client.indices().delete(request, RequestOptions.DEFAULT);
    }

綜上所述,索引庫操作的基本步驟:
? 初始化RestHighLevelClient
? 創(chuàng)建XxxIndexRequest。Xxx可以是Create,Get,Delete
? 準備DSL語句( Create時需要)
? 發(fā)送請求。調(diào)用RestHighLevelClient#indices().xxx()方法,xxx可以是create,exists,delete
ElasticSearch之RestClient操作索引庫和文檔

RestClient操作文檔

操作文檔和操作索引庫一樣,需要完成RestClient的初始化和銷毀操作,這里不展現(xiàn)重復代碼了。

插入文檔

前面調(diào)用MybatisPlus中查詢的方法從數(shù)據(jù)庫中查詢出ID為61083的信息,由于索引庫和數(shù)據(jù)庫中的某字段不是很對應,所以做了一次轉(zhuǎn)換。之后開始操作文檔。

  • 第一步,創(chuàng)建文檔,與POST /索引庫名稱/_doc/1相對應
  • 第二步,準備json文檔,上部代碼已經(jīng)對數(shù)據(jù)json序列化了
  • 第三步,直接調(diào)用index方法發(fā)送請求
    private RestHighLevelClient client;
    @Autowired
    private IHotelService hotelService;
    
    @Test
    void testAddDocument() throws IOException {
        // 1.查詢數(shù)據(jù)庫hotel數(shù)據(jù)
        Hotel hotel = hotelService.getById(61083L);
        // 2.轉(zhuǎn)換為HotelDoc
        HotelDoc hotelDoc = new HotelDoc(hotel);
        // 3.轉(zhuǎn)JSON
        String json = JSON.toJSONString(hotelDoc);

        // 1.準備Request
        IndexRequest request = new IndexRequest("hotel").id(hotelDoc.getId().toString());//索引庫中對id的要求為"keyword",因此要轉(zhuǎn)換成string類型
        // 2.準備請求參數(shù)DSL,其實就是文檔的JSON字符串
        request.source(json, XContentType.JSON);
        // 3.發(fā)送請求
        client.index(request, RequestOptions.DEFAULT);
    }

查詢文檔

根據(jù)id查詢文檔信息,相對應的DSL語句為:GET /數(shù)據(jù)庫名稱/_doc/1。查詢是新建GetRequest對象。

    @Test
    void testGetDocumentById() throws IOException {
        // 1.準備Request      // GET /hotel/_doc/{id}
        GetRequest request = new GetRequest("hotel", "61083");
        // 2.發(fā)送請求
        GetResponse response = client.get(request, RequestOptions.DEFAULT);
        // 3.解析響應結(jié)果
        String json = response.getSourceAsString();
        //查詢出來的對象是json形式,這里轉(zhuǎn)換成HotelDoc對象形式
        HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
        System.out.println("hotelDoc = " + hotelDoc);
    }

修改文檔

前面介紹的修改有兩種方式,一種為全局修改,一種為增量修改,這里以增量修改為例(DSL語句:POST /數(shù)據(jù)庫名稱/_doc/1):

    @Test
    void testUpdateById() throws IOException {
        // 1.準備Request
        UpdateRequest request = new UpdateRequest("hotel", "61083");
        // 2.準備參數(shù),這里是需要改變的參數(shù)
        request.doc(
                "price", "870"
        );
        // 3.發(fā)送請求
        client.update(request, RequestOptions.DEFAULT);
    }

文檔操作的基本步驟:
? 初始化RestHighLevelClient
? 創(chuàng)建XxxRequest。Xxx可以是Index,Get,Update,Delete
? 準備參數(shù)(Index和Update時需要)
? 發(fā)送請求。調(diào)用RestHighLevelClient.xxx()方法,xxx可以是index,get,update,delete
? 解析結(jié)果(Get時需要,將查詢出的json形式轉(zhuǎn)化為對象形式)

本篇文章就先分享到這里了,后續(xù)會繼續(xù)分享其他方面的知識,感謝大佬認真讀完支持咯~
ElasticSearch之RestClient操作索引庫和文檔

文章到這里就結(jié)束了,如果有什么疑問的地方請指出,諸佬們一起討論??
希望能和諸佬們一起努力,今后我們頂峰相見??
再次感謝各位小伙伴兒們的支持??

ElasticSearch之RestClient操作索引庫和文檔文章來源地址http://www.zghlxwxcb.cn/news/detail-458385.html

到了這里,關(guān)于ElasticSearch之RestClient操作索引庫和文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 微服務(wù)學習|初識elasticsearch、操作索引庫、文檔操作、RestClient操作索引庫、RestClient操作文檔

    微服務(wù)學習|初識elasticsearch、操作索引庫、文檔操作、RestClient操作索引庫、RestClient操作文檔

    elasticsearch是一款非常強大的開源搜索引擎,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容。 elasticsearch結(jié)合kibana、Logstash、Beats,也就是elastic stack (ELK)。被廣泛應用在日志數(shù)據(jù)分析、實時監(jiān)控等領(lǐng)域 elasticsearch是elastic stack的核心,負責存儲、搜索、分析數(shù)據(jù) Lucene是一個jav

    2024年01月18日
    瀏覽(64)
  • ElasticSearch索引庫、文檔、RestClient操作

    ElasticSearch索引庫、文檔、RestClient操作

    es中的索引是指相同類型的文檔集合 ,即mysql中表的概念 映射:索引中文檔字段的約束,比如名稱、類型 mapping映射是對索引庫中文檔的約束。類似mysql對表單字段的約束 type :字段數(shù)據(jù)類型,常見的類型有: 字符串:text(可分詞的文本)、keyword(不可分詞的文本,例如國家

    2024年02月10日
    瀏覽(24)
  • ElasticSearch基礎(chǔ)1——索引和文檔。Kibana,RestClient操作索引和文檔+黑馬旅游ES庫導入

    ElasticSearch基礎(chǔ)1——索引和文檔。Kibana,RestClient操作索引和文檔+黑馬旅游ES庫導入

    導航: 【黑馬Java筆記+踩坑匯總】JavaSE+JavaWeb+SSM+SpringBoot+瑞吉外賣+SpringCloud/SpringCloudAlibaba+黑馬旅游+谷粒商城 黑馬旅游源碼:? https://wwmg.lanzouk.com/ikjTE135ybje 目錄 1.初識彈性搜索elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 1.1.2.ELK彈性棧 1.1.3.elasticsearch和lucene 1.1.4.搜索引擎技術(shù)

    2024年02月01日
    瀏覽(50)
  • Elasticsearch索引庫和文檔的相關(guān)操作

    Elasticsearch索引庫和文檔的相關(guān)操作

    前言:最近一直在復習Elasticsearch相關(guān)的知識,公司搜索相關(guān)的技術(shù)用到了這個,用公司電腦配了環(huán)境,借鑒網(wǎng)上的課程進行了總結(jié)。希望能夠加深自己的印象以及幫助到其他的小伙伴兒們????。 如果文章有什么需要改進的地方還請大佬不吝賜教????。 小威在此先感謝各位

    2024年02月02日
    瀏覽(37)
  • 【ElasticSearch】基于 Java 客戶端 RestClient 實現(xiàn)對 ElasticSearch 索引庫、文檔的增刪改查操作,以及文檔的批量導入

    【ElasticSearch】基于 Java 客戶端 RestClient 實現(xiàn)對 ElasticSearch 索引庫、文檔的增刪改查操作,以及文檔的批量導入

    ElasticSearch 官方提供了各種不同語言的客戶端,用來操作 ES。這些客戶端的本質(zhì)就是組裝 DSL 語句,通過 HTTP 請求發(fā)送給 ES 服務(wù)器。 官方文檔地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html。 在本文中,我們將著重介紹 ElasticSearch Java 客戶端中的 RestClient,并演示如何

    2024年02月08日
    瀏覽(30)
  • 【Elasticsearch篇】詳解使用RestClient操作索引庫的相關(guān)操作

    【Elasticsearch篇】詳解使用RestClient操作索引庫的相關(guān)操作

    Elasticsearch是一個開源的分布式搜索和分析引擎, 用于實時搜索、分析和存儲大規(guī)模數(shù)據(jù) 。它基于Apache Lucene庫構(gòu)建,提供了一個簡單而強大的分布式搜索解決方案。 Elasticsearch具有以下特點: 分布式架構(gòu):Elasticsearch可以在多個節(jié)點上分布數(shù)據(jù),并自動處理數(shù)據(jù)的復制、故障

    2024年01月24日
    瀏覽(25)
  • Elasticsearch --- RestAPI、RestClient操作文檔

    Elasticsearch --- RestAPI、RestClient操作文檔

    ES官方提供了各種不同語言的客戶端,用來操作ES。這些客戶端的本質(zhì)就是組裝DSL語句,通過http請求發(fā)送給ES。官方文檔地址:Elasticsearch Clients | Elastic 其中的Java Rest Client又包括兩種: ? 創(chuàng)建數(shù)據(jù)庫 創(chuàng)建項目 mapping映射分析 創(chuàng)建索引庫,最關(guān)鍵的是mapping映射,而mapping映射要

    2024年02月07日
    瀏覽(35)
  • 【ElasticSearch】JavaRestClient實現(xiàn)索引庫和文檔的增刪改查

    【ElasticSearch】JavaRestClient實現(xiàn)索引庫和文檔的增刪改查

    ES官方提供了各種不同語言的客戶端,用來操作ES,即RestClient。這些 客戶端的本質(zhì)就是組裝DSL語句,通過http請求發(fā)送給ES。 數(shù)據(jù)庫信息如下: 導入demo工程,基本結(jié)構(gòu)如下: ES的mapping要考慮的點主要有: 字段名(name) 字段類型(type) 是否參與搜索(index) 是否分詞(typ

    2024年02月13日
    瀏覽(17)
  • 【ElasticSearch】使用 Java 客戶端 RestClient 實現(xiàn)對文檔的查詢操作,以及對搜索結(jié)果的排序、分頁、高亮處理

    【ElasticSearch】使用 Java 客戶端 RestClient 實現(xiàn)對文檔的查詢操作,以及對搜索結(jié)果的排序、分頁、高亮處理

    在 Elasticsearch 中,通過 RestAPI 進行 DSL 查詢語句的構(gòu)建通常是通過 HighLevelRestClient 中的 resource() 方法來實現(xiàn)的。該方法包含了查詢、排序、分頁、高亮等所有功能,為構(gòu)建復雜的查詢提供了便捷的接口。 RestAPI 中構(gòu)建查詢條件的核心部分是由一個名為 QueryBuilders 的工具類提供

    2024年01月16日
    瀏覽(41)
  • Elasticsearch 索引庫與文檔操作

    2023年04月19日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包