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

ElasticSearch6.x版本的Scroll滾動查詢講解及Kibana和SpringBoot實操演示

這篇具有很好參考價值的文章主要介紹了ElasticSearch6.x版本的Scroll滾動查詢講解及Kibana和SpringBoot實操演示。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、Scroll滾動查詢介紹

ElasticSearch中在進(jìn)行普通的查詢時,默認(rèn)只會查詢出來10條數(shù)據(jù)。我們通過設(shè)置ElasticSearch中的size可以將最終的查詢結(jié)果從10增加到10000。但這時候如果我們需要查詢的數(shù)據(jù)大于10000條怎么辦呢?這時候有兩種方法:深度分頁滾動查詢。在這里我們優(yōu)選選擇滾動查詢,因為深度分頁越往后查性能越低,極其耗費內(nèi)存和CPU。

在介紹滾動查詢之前,我們先簡單了解下深度分頁
深度分頁其實就是用fromsize兩個關(guān)鍵字實現(xiàn)的。如下圖所示,from關(guān)鍵字可以指定從哪個位置開始搜索,size關(guān)鍵字可以指定搜索幾條數(shù)據(jù),但深度分頁的搜索很深,對性能方面會帶來很大的影響, 因此這種方式不推薦使用。

GET /online_house_achieve/house/_search
{
  "query": {"match_all": {}},
  "from": 10000,
  "size": 5
}

然后我們來了解下滾動查詢
滾動查詢,和關(guān)系型數(shù)據(jù)庫中的游標(biāo)有點類似,因此也叫游標(biāo)查詢。也相當(dāng)于一個快照,它是ElasticSearch中提供的一種查詢大數(shù)據(jù)量的方式。

二、Kibana上操作

要想使用滾動查詢,我們只需要在_search后面加上scroll就好了。

GET /online_house_achieve/house/_search?scroll=1m
{
  "query": {"match_all": {}},
  "size": 1
}

這里有幾個注意點

  • scroll表示這是一個scroll滾動查詢。
  • scroll=1m表示查詢的結(jié)果數(shù)據(jù)在ElasticSearch服務(wù)器中過期時間為1min。
  • 查詢完會返回一個_scroll_id,該字段其實就相當(dāng)于一個書簽,在我們之后的查詢中需要帶著這個書簽,就可以一直往后根據(jù)設(shè)置的size大小獲取數(shù)據(jù)(前提是在設(shè)置的過期時間之內(nèi))。spring-data-elasticsearch 滾動查詢,開發(fā)記錄,spring boot,elasticsearch,java那問題來了,我們該如何使用這個_scroll_id實現(xiàn)進(jìn)一步的滾動查詢呢?我們直接看下面代碼。
GET /_search/scroll/
{
  "scroll":"1m",
  "scroll_id":"DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAa5Fm9hLW9TeGtTU2NTWEI2bFpNbEJ0clEAAAAAAAAGtxZvYS1vU3hrU1NjU1hCNmxaTWxCdHJRAAAAAAAABroWb2Etb1N4a1NTY1NYQjZsWk1sQnRyUQAAAAAAAAa4Fm9hLW9TeGtTU2NTWEI2bFpNbEJ0clEAAAAAAAAGuxZvYS1vU3hrU1NjU1hCNmxaTWxCdHJR"
}

將獲取的scroll_id作為條件繼續(xù)查詢即可,不需要再指定索引和類型。因為scroll_id具有唯一性,在過期時間內(nèi),之后查詢的scroll_id是不變的。

三、SpringBoot中操作

1.先在pom.xml里面引入依賴。

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

2.然后在SpringBoot項目中增加以下配置。

這里我是用HTTP的方式進(jìn)行連接,端口是9200。如果你們是用TCP方式進(jìn)行連接的話,端口記得改成9300。

@Configuration
public class ESRestClientConfig extends AbstractElasticsearchConfiguration {

    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                .connectedTo("127.0.0.1:9200")
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}

3.然后寫單元測試代碼,實現(xiàn)滾動查詢。文章來源地址http://www.zghlxwxcb.cn/news/detail-796788.html

@Test
public void testESScroll() throws IOException {
    SearchRequest searchRequest = new SearchRequest();
    // 構(gòu)造ElasticSearch查詢條件
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
    sourceBuilder.size(1).query(QueryBuilders.matchAllQuery());
    // 設(shè)置scroll超時時間(10min)
    Scroll scroll = new Scroll(TimeValue.timeValueMinutes(10L));
    // 指定查詢的索引和類型
    searchRequest.indices("online_house_achieve").types("house").scroll(scroll);
    SearchResponse response = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
    // 獲取第一次查詢的結(jié)果,并拿到scrollId滾動id
    SearchHit[] scrollHits = response.getHits().getHits();
    for (SearchHit hit : scrollHits) {
        logger.info(hit.getSourceAsString());
    }
    //記錄滾動id。
    String scrollId = response.getScrollId();
    //滾動查詢部分,將從第2條數(shù)據(jù)開始取。
    scrollHits = response.getHits().getHits();
    while (scrollHits != null && scrollHits.length > 0 ) {
        //構(gòu)造滾動查詢條件
        SearchScrollRequest searchScrollRequest = new SearchScrollRequest(scrollId);
        searchScrollRequest.scroll(scroll);
        //響應(yīng)必須是上面的響應(yīng)對象,需要對上一層進(jìn)行覆蓋。
        response = restHighLevelClient.scroll(searchScrollRequest, RequestOptions.DEFAULT);
        scrollId = response.getScrollId();
        scrollHits = response.getHits().getHits();
        for (SearchHit hit : scrollHits) {
            logger.info(hit.getSourceAsString());
        }
    }
    // 數(shù)據(jù)獲取完畢后需要清除滾動,否則影響下次查詢
    ClearScrollRequest clearScrollRequest = new ClearScrollRequest();
    clearScrollRequest.addScrollId(scrollId);
    ClearScrollResponse clearScrollResponse = restHighLevelClient.clearScroll(clearScrollRequest, RequestOptions.DEFAULT);
    //清除滾動是否成功
    boolean isSuccess = clearScrollResponse.isSucceeded();
    logger.info("=====================>清楚滾動scroll是否成功:{}",isSuccess);
}

四、總結(jié)

  • 滾動查詢是建立在普通查詢基礎(chǔ)上的。
  • 滾動查詢相當(dāng)于快照,如果在使用scroll進(jìn)行滾動查詢期間有增刪改的操作,那么查詢結(jié)果是獲取不到最新的數(shù)據(jù)的。
  • 深度分頁和滾動查詢優(yōu)先使用滾動查詢,性能更優(yōu),CPU資源耗費更少。
  • 使用完滾動查詢后要記得清除滾動,以免影響下次使用。

到了這里,關(guān)于ElasticSearch6.x版本的Scroll滾動查詢講解及Kibana和SpringBoot實操演示的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ElasticSearch6.x版本概念介紹以及在Kibana上增刪改查的操作

    ElasticSearch6.x版本概念介紹以及在Kibana上增刪改查的操作

    教學(xué)講解視頻地址:視頻地址 1.接近實時(NRT Near Real Time ) Elasticsearch是一個 接近實時 的搜索平臺。這意味著, 從索引一個文檔直到這個文檔能夠被搜索到有一個輕微的延遲(通常是1秒內(nèi)) 2.索引(index) 一個索引就是一個擁有幾分相似特征的文檔的集合 。比如說,你可以有一個

    2023年04月24日
    瀏覽(28)
  • Elasticsearch 使用scroll滾動技術(shù)實現(xiàn)大數(shù)據(jù)量搜索、深度分頁問題 和 search

    基于scroll滾動技術(shù)實現(xiàn)大數(shù)據(jù)量搜索 如果一次性要查出來比如10萬條數(shù)據(jù),那么性能會很差,此時一般會采取用scroll滾動查詢,一批一批的查,直到所有數(shù)據(jù)都查詢完為止。 scroll搜索會在第一次搜索的時候,保存一個當(dāng)時的視圖快照,之后只會基于該舊的視圖快照提供數(shù)據(jù)搜

    2024年02月14日
    瀏覽(19)
  • java使用ElasticSearch的scroll查詢,高效的解決es查詢數(shù)量的限制。

    (1)首先我們要明白es的查詢機制:ES的搜索是分2個階段進(jìn)行的,即 Query階段和Fetch階段 。 Query階段 比較輕量級,通過查詢倒排索引,獲取滿足查詢結(jié)果的文檔ID列表。 Fetch階段 比較重,需要將每個分片的查詢結(jié)果取回,在協(xié)調(diào)結(jié)點進(jìn)行 全局 排序。 通過From+size這種方式分批

    2024年02月03日
    瀏覽(41)
  • ElasticSearch7.3學(xué)習(xí)(二十二)----Text字段排序、Scroll分批查詢場景解析

    ElasticSearch7.3學(xué)習(xí)(二十二)----Text字段排序、Scroll分批查詢場景解析

    場景:數(shù)據(jù)庫中按照某個字段排序,sql只需寫order by 字段名即可,如果es對一個 text field 進(jìn)行排序,es中無法排序。因為文檔入倒排索引表時,分詞存入,es無法知道此字段的真實值。這樣的結(jié)果往往不準(zhǔn)確,因為分詞后是多個單詞,再排序就不是我們想要的結(jié)果了。 通常有兩

    2024年02月08日
    瀏覽(19)
  • Elasticsearch“滾動查詢“(Scrolling)的機制的與Java使用ES Client 調(diào)用滾動查詢

    Elasticsearch“滾動查詢“(Scrolling)的機制的與Java使用ES Client 調(diào)用滾動查詢

    ES在進(jìn)行普通的查詢時,默認(rèn)只會查詢出來10條數(shù)據(jù)。我們通過設(shè)置es中的size可以將最終的查詢結(jié)果從10增加到10000。如果需要查詢數(shù)據(jù)量大于es的翻頁限制或者需要將es的數(shù)據(jù)進(jìn)行導(dǎo)出又當(dāng)如何? Elasticsearch提供了一種稱為 \\\"滾動查詢\\\"(Scrolling) 的機制,用于處理大型數(shù)據(jù)集的

    2024年02月11日
    瀏覽(18)
  • ElasticSearch第六講 ES 三種分頁查詢from+size / Scroll /search_after

    我的Git地址:https://gitee.com/ITLULU 歡迎訪問 ES的分頁查詢和關(guān)系數(shù)據(jù)庫的分頁查詢的區(qū)別: ES分頁查詢有以下幾種: 1:簡單的 from size (有默認(rèn)的最大Size,不可無限大小查詢,因為數(shù)據(jù)過多查詢性能會降低,且也要考慮內(nèi)存問題,以及OS緩存數(shù)據(jù)的能力) 2: scroll基于查詢窗口

    2024年02月01日
    瀏覽(15)
  • elasticsearch6.8.6安裝配置

    ?參考文章: elasticsearch安裝配置_qianhuan_的博客-CSDN博客_elasticsearch安裝配置 CentOS7.3安裝elasticsearch6.8.6 - 簡書 java1.8+ 下載地址: 解壓elasticsearch-6.8.6.tar.gz tar -zxvf?elasticsearch-6.8.6.tar.gz 啟動es必須創(chuàng)建用戶,不能使用root啟動 useradd esuser 分配權(quán)限 chown -R esuser?elasticsearch-6.8.6(安裝

    2024年02月10日
    瀏覽(34)
  • elasticsearch6.6.0設(shè)置訪問密碼

    elasticsearch6.6.0設(shè)置訪問密碼

    首先破解 x-pack-core-6.6.0.jar 破解的方式大家可以參考 https://codeantenna.com/a/YDks83ZHjd 中5.破解x-pack 這部分 , 也可以直接下載我編譯好的 https://download.csdn.net/download/iBuDongIt/88748782 下載后解壓替換 elasticsearch-6.6.0/modules/x-pack-core/x-pack-core-6.6.0.jar即可 注意 : 先切換到 elasticsearch 所屬的

    2024年01月17日
    瀏覽(22)
  • elasticsearch7與elasticsearch6配置的一點差異

    Elasticsearch 的核心是集群協(xié)調(diào)子系統(tǒng)。Elasticsearch 7 提供了一個新的集群協(xié)調(diào)子系? 統(tǒng),Elasticsearch 6.x 及之前的版本使用了一個叫作 Zen Discovery 的集群協(xié)調(diào)子系統(tǒng),從 7.0 開始,如果你想要啟動一個全新的集群,并且集群在多臺主機上都有節(jié)點,那么你必須指定該集群在第一次

    2024年02月11日
    瀏覽(17)
  • 【ES實戰(zhàn)】Elasticsearch6開始的CCR

    本文涉及官網(wǎng)文章地址 Overview Requirements for leader indices Automatically following indices Getting started with cross-cluster replication Upgrading clusters 跨集群復(fù)制 (CCR) 功能可以將遠(yuǎn)程集群中的索引復(fù)制到本地集群。 此功能可用于一些常見的生產(chǎn)用例: 主集群發(fā)生故障時的災(zāi)難恢復(fù)。 輔助集群可

    2024年01月15日
    瀏覽(52)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包