亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

elasticsearch索引index數(shù)據(jù)功能源碼示例

 更新時間:2022年04月22日 09:50:18   作者:zziawan  
這篇文章主要為大家介紹了elasticsearch索引index功能源碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

從本篇開始,對elasticsearch的介紹將進(jìn)入數(shù)據(jù)功能部分(index),這一部分包括索引的創(chuàng)建,管理,數(shù)據(jù)索引及搜索等相關(guān)功能。對于這一部分的介紹,首先對各個功能模塊的分析,然后詳細(xì)分析數(shù)據(jù)索引和搜索的整個流程。

這一部分從代碼包結(jié)構(gòu)上可以分為:index, indices及l(fā)ucene(common)幾個部分。index包中的代碼主要是各個功能對應(yīng)于lucene的底層操作,它們的操作對象是index的shard,是elasticsearch對lucene各個功能的擴(kuò)展和封裝。indices部分是對index部分功能的封裝,集群對于底層索引的操作多數(shù)通過這一部分提供的接口來進(jìn)行。common包下的lucene部分代碼主要是對于索引一些讀操作(索引級別)的封裝。如讀取索引元數(shù)據(jù),搜索中用到的一些過濾器的實現(xiàn)等。

在index部分通過對lucene的封裝,為es提供了索引操作各個功能的接口。如codec,這一部分是lucene索引寫入的部分。在4.x后這一部分被分開成為單獨的一層,在這里對其進(jìn)行了封裝。postformat是lucene中倒排表的寫入格式,封裝后通過postingformatservice對外提供。而具體的postform則是由postprovide提供。它的繼承關(guān)系如下所示:

 外部通過調(diào)用postingservice的get方法獲取到對應(yīng)的postingprovider,代碼如下所示:

public PostingsFormatProvider get(String name) throws ElasticsearchIllegalArgumentException {
        PostingsFormatProvider provider = providers.get(name);
        if (provider == null) {
            throw new ElasticsearchIllegalArgumentException("failed to find postings_format [" + name + "]");
        }
        return provider;
    }

這里的provides在service初始化時注入,當(dāng)然es的1.5版本只是使用了默認(rèn)的DefaultPostingFormatProvider。postformat的獲取則是通過postingprovider的get的方法,而對應(yīng)的postingformat初始化在構(gòu)造方法總實現(xiàn):

public DefaultPostingsFormatProvider(@Assisted String name, @Assisted Settings postingsFormatSettings) {
        super(name);
        this.minBlockSize = postingsFormatSettings.getAsInt("min_block_size", BlockTreeTermsWriter.DEFAULT_MIN_BLOCK_SIZE);
        this.maxBlockSize = postingsFormatSettings.getAsInt("max_block_size", BlockTreeTermsWriter.DEFAULT_MAX_BLOCK_SIZE);
        this.postingsFormat = new Lucene41PostingsFormat(minBlockSize, maxBlockSize);
    }

可以看到這里就是初始化了lucene的postingformat。這一部分的實現(xiàn)多數(shù)都跟codec的實現(xiàn)類似,后面的分析中會對其中的一些做詳細(xì)的介紹。對于寫索引的方法都在Engine中。這里封裝了所有對于索引寫操作的方法,后面會詳細(xì)分析。

關(guān)于common部分的lucene的功能基本都是對lucene的讀操作,如對于segment信息讀取的方法如下所示:

public static SegmentInfos readSegmentInfos(Directory directory) throws IOException {
        final SegmentInfos sis = new SegmentInfos();
        sis.read(directory);
        return sis;
    }

直接調(diào)用了lucene的segmentInfos類讀取segment信息。這一部分在后面會單獨分析,這里只是簡單介紹一下。

index部分是shard基本的接口,這里的操作都是針對于單個機(jī)器單個shard(lucene index)的操作,不涉及集群。而indice部分則通過封裝index的相關(guān)功能為集群對于index的操作提供了相關(guān)接口。如這里的store部分,只是提供了一個實現(xiàn)類IndiceStore,它的實現(xiàn)如下所示。

它實現(xiàn)了多個handle類用于處理來自集群的相關(guān)請求。跟之前結(jié)束的handler一樣,這些內(nèi)部類會接收處理屬于本節(jié)點的請求,轉(zhuǎn)發(fā)屬于本節(jié)點請求到對應(yīng)節(jié)點。

以上就是elasticsearch數(shù)據(jù)(index)部分的代碼結(jié)構(gòu)。這里只是簡單的概述,后面會對對應(yīng)的部分進(jìn)行詳細(xì)分析,更多關(guān)于elasticsearch索引index數(shù)據(jù)功能的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(詳解)

    基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(詳解)

    下面小編就為大家?guī)硪黄趕pring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 手寫簡版kedis分布式key及value服務(wù)的實現(xiàn)及配置

    手寫簡版kedis分布式key及value服務(wù)的實現(xiàn)及配置

    這篇文章主要為大家介紹了手寫簡版的kedis分布式key及value服務(wù)的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • 解讀JDK1.8?默認(rèn)使用什么垃圾收集器

    解讀JDK1.8?默認(rèn)使用什么垃圾收集器

    這篇文章主要介紹了解讀JDK1.8?默認(rèn)使用什么垃圾收集器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java json與map互相轉(zhuǎn)換的示例

    java json與map互相轉(zhuǎn)換的示例

    這篇文章主要介紹了java json與map互相轉(zhuǎn)換的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • SpringBoot參數(shù)校驗示例詳解

    SpringBoot參數(shù)校驗示例詳解

    SpringBoot自帶了validation工具可以從后端對前端傳來的參數(shù)進(jìn)行校驗,本文給大家介紹SpringBoot參數(shù)校驗及用法,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 使用Spring MVC攔截器實現(xiàn)日志記錄的方法

    使用Spring MVC攔截器實現(xiàn)日志記錄的方法

    本篇文章主要介紹了使用Spring MVC攔截器實現(xiàn)日志記錄的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java線程池必知必會知識點總結(jié)

    Java線程池必知必會知識點總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java線程池必知必會知識點的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-02-02
  • Mybatis中的like模糊查詢功能

    Mybatis中的like模糊查詢功能

    這篇文章主要介紹了Mybatis中的like模糊查詢功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • JAVA 根據(jù)Url把多文件打包成ZIP下載實例

    JAVA 根據(jù)Url把多文件打包成ZIP下載實例

    這篇文章主要介紹了JAVA 根據(jù)Url把多文件打包成ZIP下載的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • springboot與redis的簡單整合實例

    springboot與redis的簡單整合實例

    Redis是一個緩存、消息代理和功能豐富的鍵值存儲。StringBoot提供了基本的自動配置。這篇文章主要介紹了springboot與redis的簡單整合實例,非常具有實用價值,需要的朋友可以參考下
    2019-01-01

最新評論