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

Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②

這篇具有很好參考價值的文章主要介紹了Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

?? 前情提要:

Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ①

目錄

?一、Springboot 整合 Elasticsearch

1、RestHighLevelClient API介紹

1.1、全查詢 & 分頁 & 排序

1.2、單條件查詢

1.2.1、termQuery

1.2.2、matchQuery

1.2.3、短語檢索

1.3、組合查詢

1.4、范圍查詢

1.5、模糊查詢

1.6、分組查詢


一、Springboot 整合 Elasticsearch

1、RestHighLevelClient API介紹

目前的測試數(shù)據(jù)有:

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

1.1、全查詢 & 分頁 & 排序

    @Test
    public void queryAllDoc() {
        try {
            String indexName = "forest";
            SearchRequest request = new SearchRequest();
            request.indices(indexName);

            // 構(gòu)建查詢的請求體
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.matchAllQuery());
            // 設(shè)置分頁
            sourceBuilder.from(1);
            sourceBuilder.size(3);
            // 設(shè)置排序
            sourceBuilder.sort("price",  SortOrder.DESC);

            request.source(sourceBuilder);

            SearchResponse search = esConfig.restHighLevelClient().search(request, RequestOptions.DEFAULT);
            if (200 != search.status().getStatus()) {
                log.error("查詢失敗");
            }
            System.out.println("--------查詢結(jié)果-----------");
            SearchHits hits = search.getHits();
            for (SearchHit hit : hits) {
                System.out.println(hit.getSourceAsString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

1.2、單條件查詢

1.2.1、termQuery

term屬于精確匹配,而且只能查單個詞(一個漢字或者一個英文單詞),不會對用戶輸入的內(nèi)容進(jìn)行分詞;

    @Test
    public void queryDocByKey() {
        try {
            String indexName = "forest";
            SearchRequest request = new SearchRequest();
            request.indices(indexName);
            // 構(gòu)建查詢的請求體
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.termQuery("price", "300"));
            request.source(sourceBuilder);

            SearchResponse search = esConfig.restHighLevelClient().search(request, RequestOptions.DEFAULT);
            if (200 != search.status().getStatus()) {
                log.error("查詢失敗");
            }
            System.out.println("--------查詢結(jié)果-----------");
            SearchHits hits = search.getHits();
            for (SearchHit hit : hits) {
                System.out.println(hit.getSourceAsString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

1.2.2、matchQuery

match進(jìn)行搜索的時候,會先進(jìn)行分詞拆分,拆完后,再來匹配;例如輸入“楓樹”,match會拆分成“楓”,“樹”兩個字,只要包含其中一個字的都會被查出來。

    @Test
    public void queryDocByKey() {
        try {
            String indexName = "forest";
            SearchRequest request = new SearchRequest();
            request.indices(indexName);
            // 構(gòu)建查詢的請求體
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.matchQuery("title", "楓樹"));
            request.source(sourceBuilder);

            SearchResponse search = esConfig.restHighLevelClient().search(request, RequestOptions.DEFAULT);
            if (200 != search.status().getStatus()) {
                log.error("查詢失敗");
            }
            System.out.println("--------查詢結(jié)果-----------");
            SearchHits hits = search.getHits();
            for (SearchHit hit : hits) {
                System.out.println(hit.getSourceAsString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

1.2.3、短語檢索

要求所有的分詞必須同時出現(xiàn)在文檔中,同時位置必須緊鄰一致

    @Test
    public void queryDocByPhraseKey() {
        try {
            String indexName = "forest";
            SearchRequest request = new SearchRequest();
            request.indices(indexName);
            // 構(gòu)建查詢的請求體
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.matchPhraseQuery("title", "楓樹"));
            request.source(sourceBuilder);

            SearchResponse search = esConfig.restHighLevelClient().search(request, RequestOptions.DEFAULT);
            if (200 != search.status().getStatus()) {
                log.error("查詢失敗");
            }
            System.out.println("--------查詢結(jié)果-----------");
            SearchHits hits = search.getHits();
            for (SearchHit hit : hits) {
                System.out.println(hit.getSourceAsString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

1.3、組合查詢

  • must:返回的文檔必須滿足must子句的條件,并且參與計(jì)算分值;
  • mustNot:返回的文檔必須不滿足定義的條件;
  • should:在一個bool查詢中,如果沒有must或者filter,有一個或者多個should子句,那么只要滿足一個就可以返回;
  • filter:返回的文檔必須滿足filter子句的條件,但是不會像must一樣,參與計(jì)算分值;
    @Test
    public void queryByCombinationKey() {
        try {
            // 聲明搜索條件對象
            String indexName = "forest";
            SearchRequest request = new SearchRequest();
            request.indices(indexName);
            // 構(gòu)建查詢的請求體
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

            boolQueryBuilder.must(QueryBuilders.matchQuery("price", 1000));
            boolQueryBuilder.should(QueryBuilders.matchQuery("id", 3));
            sourceBuilder.query(boolQueryBuilder);
            request.source(sourceBuilder);
            SearchResponse search = esConfig.restHighLevelClient().search(request, RequestOptions.DEFAULT);

            if (200 != search.status().getStatus()) {
                log.error("查詢失敗");
            }
            System.out.println("--------查詢結(jié)果-----------");
            SearchHits hits = search.getHits();
            for (SearchHit hit : hits) {
                System.out.println(hit.getSourceAsString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

[注]當(dāng)使用should查詢時,如果包含了must或者filter查詢,那么should的查詢語句就不是或者的意思了,而是有或者沒有都行的含義。

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

1.4、范圍查詢

  • 閉區(qū)間查詢:QueryBuilders.rangeQuery("${fieldName}").from(${fieldValue1}).to(${fieldValue2});
  • 開區(qū)間查詢:QueryBuilders.rangeQuery("${fieldName}").from(${fieldValue1}, false).to(${fieldValue2}, false);
  • 大于:QueryBuilders.rangeQuery("${fieldName}").gt(${fieldValue});
  • 大于等于:QueryBuilders.rangeQuery("${fieldName}").gte(${fieldValue});
  • 小于:QueryBuilders.rangeQuery("${fieldName}").lt(${fieldValue});
  • 小于等于:QueryBuilders.rangeQuery("${fieldName}").lte(${fieldValue});
 @Test
    public void queryByCombinationKey() {
        try {
            // 聲明搜索條件對象
            String indexName = "forest";
            SearchRequest request = new SearchRequest();
            request.indices(indexName);
            // 構(gòu)建查詢的請求體
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

            boolQueryBuilder.must(QueryBuilders.rangeQuery("price").from(300).to(500));
            boolQueryBuilder.must(QueryBuilders.rangeQuery("inventory").from(500).to(1000));

            sourceBuilder.query(boolQueryBuilder);
            request.source(sourceBuilder);
            SearchResponse search = esConfig.restHighLevelClient().search(request, RequestOptions.DEFAULT);

            if (200 != search.status().getStatus()) {
                log.error("查詢失敗");
            }
            System.out.println("--------查詢結(jié)果-----------");
            SearchHits hits = search.getHits();
            for (SearchHit hit : hits) {
                System.out.println(hit.getSourceAsString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

1.5、模糊查詢

    @Test
    public void queryFuzzyDocByKey() {
        try {
            String indexName = "forest";
            SearchRequest request = new SearchRequest();
            request.indices(indexName);
            // 構(gòu)建查詢的請求體
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
            sourceBuilder.query(QueryBuilders.fuzzyQuery("title", "松").fuzziness(Fuzziness.AUTO));
            request.source(sourceBuilder);

            SearchResponse search = esConfig.restHighLevelClient().search(request, RequestOptions.DEFAULT);
            if (200 != search.status().getStatus()) {
                log.error("查詢失敗");
            }
            System.out.println("--------查詢結(jié)果-----------");
            SearchHits hits = search.getHits();
            for (SearchHit hit : hits) {
                System.out.println(hit.getSourceAsString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端

1.6、分組查詢

按價格分組后求每組的條數(shù)

    @Test
    public void queryGroupByKey() {
        try {
            // 聲明搜索條件對象
            String indexName = "forest";
            SearchRequest request = new SearchRequest();
            request.indices(indexName);
            // 構(gòu)建查詢的請求體
            SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

            sourceBuilder.aggregation(AggregationBuilders.terms("price_groupBy").field("price"));

            request.source(sourceBuilder);
            SearchResponse search = esConfig.restHighLevelClient().search(request, RequestOptions.DEFAULT);

            if (200 != search.status().getStatus()) {
                log.error("查詢失敗");
            }
            List<KeyAndCount> list = new ArrayList<>();
            System.out.println("--------查詢結(jié)果-----------");
            Terms terms = search.getAggregations().get("price_groupBy");
            List<? extends Terms.Bucket> buckets = terms.getBuckets();
            for (Terms.Bucket bucket : buckets) {
                KeyAndCount keyAndCount = new KeyAndCount();
                keyAndCount.setKey(bucket.getKey().toString());
                keyAndCount.setCount(bucket.getDocCount());
                list.add(keyAndCount);
                System.out.println(keyAndCount);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端


springboot elasticsearch-rest-high-level-client,ELK-Stack,springboot,spring boot,elasticsearch,后端文章來源地址http://www.zghlxwxcb.cn/news/detail-847223.html

到了這里,關(guān)于Springboot 整合 Elasticsearch(五):使用RestHighLevelClient操作ES ②的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • SpringBoot 實(shí)現(xiàn) elasticsearch 查詢操作(RestHighLevelClient 的案例實(shí)戰(zhàn))

    SpringBoot 實(shí)現(xiàn) elasticsearch 查詢操作(RestHighLevelClient 的案例實(shí)戰(zhàn))

    上一節(jié)講述了 SpringBoot 實(shí)現(xiàn) elasticsearch 索引操作,這一章節(jié)講述 SpringBoot 實(shí)現(xiàn) elasticsearch 查詢操作。 案例用到的索引庫結(jié)構(gòu)

    2024年02月11日
    瀏覽(19)
  • 項(xiàng)目中使用es(二):使用RestHighLevelClient操作elasticsearch

    寫在前面 之前寫了有關(guān)elasticsearch的搭建和使用springboot操作elasticsearch,這次主要簡單說下使用RestHighLevelClient工具包操作es。 搭建環(huán)境和選擇合適的版本 環(huán)境還是以springboot2.7.12為基礎(chǔ)搭建的,不過這不重要,因?yàn)檫@次想說的是RestHighLevelClient操作elasticsearch,RestHighLevelClient版本

    2024年02月14日
    瀏覽(26)
  • SpringBoot+Elasticsearch使用resthighlevelclient對象刪除指定的文檔數(shù)據(jù)

    使用客戶端刪除 在 Kibana 中,你可以使用 Dev Tools 或者 Console 來執(zhí)行 Elasticsearch 查詢和刪除操作。 ? 以下是一個使用 Dev Tools 執(zhí)行刪除文檔的示例: ? 1.打開 Kibana,轉(zhuǎn)到左側(cè)導(dǎo)航欄的 “Dev Tools” 或者 “Console”。 ? 2.在 Dev Tools 或者 Console 中輸入如下刪除請求: 請?zhí)鎿Q /

    2024年01月23日
    瀏覽(22)
  • SpringBoot+Elasticsearch使用resthighlevelclient對象查詢條件為“且+或”

    查詢年齡為15或者16或者17或者18的且班級為1班的學(xué)生信息 首先,確保您的項(xiàng)目中包含了 Elasticsearch 的依賴: 然后,您可以創(chuàng)建一個包含查詢邏輯的服務(wù)類。假設(shè)您有一個名為 StudentService 的服務(wù)類: 在上述代碼中,您需要替換 your_index_name 為實(shí)際的 Elasticsearch 索引名稱,并根

    2024年01月25日
    瀏覽(23)
  • springboot整合RestHighLevelClient

    yml config https://www.cnblogs.com/tanghaorong/p/16344391.html

    2024年02月05日
    瀏覽(15)
  • 【SpringBoot】整合Elasticsearch 操作索引及文檔

    【SpringBoot】整合Elasticsearch 操作索引及文檔

    官網(wǎng)操作文檔:Elasticsearch Clients | Elastic ????? ???????? 踩坑太多了。。。這里表明一下Spring Boot2.4以上版本可能會出現(xiàn)問題,所以我降到了2.2.1.RELEASE。對于現(xiàn)在2023年6月而言,Es版本已經(jīng)到了8.8,而SpringBoot版本已經(jīng)到了3.x版本。如果是高版本的Boot在配置類的時候會發(fā)現(xiàn)

    2024年02月09日
    瀏覽(58)
  • Elasticsearch-RestHighLevelClient基礎(chǔ)操作

    該篇文章參考下面博主文章 Java中ElasticSearch的各種查詢(普通,模糊,前綴,高亮,聚合,范圍) 【es】java使用es中三種查詢用法from size、search after、scroll 刪除索引會把索引中已經(jīng)創(chuàng)建好的數(shù)據(jù)也刪除,就好像我們在mysql中刪除庫,會把庫的數(shù)據(jù)也刪除掉一樣。 類似關(guān)閉數(shù)據(jù)

    2024年02月08日
    瀏覽(25)
  • SpringBoot中整合ElasticSearch實(shí)現(xiàn)增刪改查等操作

    SpringBoot中整合ElasticSearch實(shí)現(xiàn)增刪改查等操作

    SpringBoot中整合ElasticSearch快速入門以及踩坑記錄: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135599698 在上面進(jìn)行集成的基礎(chǔ)上,實(shí)現(xiàn)對ES數(shù)據(jù)的增刪改查等操作。 注: 博客: 霸道流氓氣質(zhì)-CSDN博客 1、ElastciSearch的對象映射 Spring Data Elasticsearch - Reference Documentation Spring Data E

    2024年01月18日
    瀏覽(14)
  • springboot整合elasticsearch使用案例

    springboot整合elasticsearch使用案例

    完成搜索和分頁 添加品牌、城市、星級、價格等過濾功能 搜索我附近的酒店 ? ?讓指定的酒店在搜索結(jié)果中排名置頂 添加isAD字段

    2024年02月09日
    瀏覽(17)
  • Elasticsearch安裝、使用,Springboot整合Elasticsearch詳細(xì)教程

    Elasticsearch安裝、使用,Springboot整合Elasticsearch詳細(xì)教程

    Elasticsearch 是一個分布式、RESTful 風(fēng)格的搜索和數(shù)據(jù)分析引擎,能夠?qū)崿F(xiàn)近乎實(shí)時的搜索。 Elasticsearch官網(wǎng) https://www.elastic.co/cn/ 這篇文章主要簡單介紹一下Elasticsearch,Elasticsearch的java API博主也在學(xué)習(xí)中,文章會持續(xù)更新~ 目錄 第一步:下載Elasticsearch 下載7.6.2版本 下載其他版本

    2024年02月04日
    瀏覽(57)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包