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

SpringBoot整合Elasticsearch實(shí)現(xiàn)分頁條件查詢及注意事項(xiàng)

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot整合Elasticsearch實(shí)現(xiàn)分頁條件查詢及注意事項(xiàng)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、簡介

項(xiàng)目環(huán)境:
springboot 2.3.7.RELEASE
es 6.8.3

二、分頁條件查詢

2.1 pom.xml

<!-- 由于SpringBoot版本是2.3.7.RELEASE,spring-data-elasticsearch默認(rèn)集成的是es7.6,所以需要
    手動指定一下es版本,否則版本會報(bào)錯(cuò)-->
<dependencies>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>6.8.3</version>
    </dependency>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>transport</artifactId>
        <version>6.8.3</version>
    </dependency>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>6.8.3</version>
    </dependency>
    <!--elasticsearch-->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
        <version>3.2.2.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>org.elasticsearch.plugin</groupId>
                <artifactId>transport-netty4-client</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!-- 引入 Google 的集合工具包 -->
    <dependency>
        <groupId>com.google.collections</groupId>
        <artifactId>google-collections</artifactId>
        <version>1.0</version>
    </dependency>

</dependencies>

2.2 es配置類

/**
 * @author :LiuShihao
 * @date :Created in 2022/6/23 12:00 上午
 * @desc :配置es集群
 */
@Configuration
public class ElasticsearchConfig {

    @Bean
    RestHighLevelClient elasticsearchClient() {
        ClientConfiguration configuration = ClientConfiguration.builder()
                //使用es 9200 端口
                .connectedTo("47.100.241.202:9200")
                //.withConnectTimeout(Duration.ofSeconds(5))
                //.withSocketTimeout(Duration.ofSeconds(3))
                //.useSsl()
                //.withDefaultHeaders(defaultHeaders)
                //.withBasicAuth(username, password)
                // ... other options
                .build();
        RestHighLevelClient client = RestClients.create(configuration).rest();
        return client;
    }
}

2.3 entity

這里需要注意es中日期格式,ES默認(rèn)是不支持yyyy-MM-dd HH:mm:ss格式的,需要通過 @Field(type = FieldType.Date, format = DateFormat.custom,pattern = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_second")
來指定日期格式。

@Data
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = "test_data")
public class WarnData {

    @Id
    @Field(type = FieldType.Text)
    private String id;

    @Field(type = FieldType.Text)
    private String province_code;

    @Field(type = FieldType.Text)
    private String city_code;

    @Field(type = FieldType.Text)
    private String area_code;


    //ES默認(rèn)是不支持yyyy-MM-dd HH:mm:ss格式的
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    @Field(type = FieldType.Date, format = DateFormat.custom,pattern = "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_second")
    private String receive_time;

}

2.4 service

直接看業(yè)務(wù)層實(shí)現(xiàn)分頁條件查詢:

范圍查詢:文章來源地址http://www.zghlxwxcb.cn/news/detail-414661.html

閉區(qū)間:   where age >=2 and age <=4    QueryBuilders.rangeQuery("age").from(age1).to(age2)
開區(qū)間:   where age >2 and age <4      QueryBuilders.rangeQuery("age").from(age1,false).to(age2,false)
大于:    where age >1                  QueryBuilders.rangeQuery("age").gt(age)
大于等于: where age >=1                 QueryBuilders.rangeQuery("age").gte(age1)
小于:    where age <4                  QueryBuilders.rangeQuery("age").lt(age1)
小于等于: where age <=4                 QueryBuilders.rangeQuery("age").lte(age1)
    /**
     * 注意 數(shù)字字符串不會進(jìn)行分詞,中文可以分詞
     * matchQuery 相當(dāng)于like 模糊查詢  會進(jìn)行分詞,必須是text類型
     * matchPhraseQuery 查詢 相當(dāng)于 = ,不會進(jìn)行分詞
     * termQuery 等值搜索:相當(dāng)于sql語句中的“=”,使用這個(gè)搜索一般是對索引中keyword的mapping進(jìn)行等值搜索。term query 屬于過濾器查詢,可以處理數(shù)字(numbers)、布爾值(Booleans)、日期(dates)以及文本(text)
     * 組合查詢 : must(and,必須匹配)、should(or,或者)、mustNot(!=,必須不匹配)
     *
     * @param searchDataDto
     * @return
     */
    @Override
    public Page<WarnData> find(SearchDataDto searchDataDto) {
        int pageNum = searchDataDto.getPageNum() == null ? 1: searchDataDto.getPageNum();
        int pageSize = searchDataDto.getPageSize() == null ? 10: searchDataDto.getPageSize();
        //創(chuàng)建查詢對象
        BoolQueryBuilder base_query = QueryBuilders.boolQuery();
        if (searchDataDto.getId() != null && !"".equals(searchDataDto.getId())){
            base_query.must(QueryBuilders.termQuery("id",searchDataDto.getId() ));
        }

        if (searchDataDto.getProvinceCode() != null && !"".equals(searchDataDto.getProvinceCode())){
            base_query.must(QueryBuilders.termQuery("province_code",searchDataDto.getProvinceCode() ));
        }
        if (searchDataDto.getCityCode() != null && !"".equals(searchDataDto.getCityCode())){
            base_query.must(QueryBuilders.termQuery("city_code",searchDataDto.getCityCode() ));
        }
        if (searchDataDto.getAreaCode() != null && !"".equals(searchDataDto.getAreaCode())){
            base_query.must(QueryBuilders.termQuery("area_code",searchDataDto.getAreaCode() ));
        }
        if (searchDataDto.getPoliceCode() != null && !"".equals(searchDataDto.getPoliceCode())){
            base_query.must(QueryBuilders.termQuery("police_code",searchDataDto.getPoliceCode() ));
        }
        //時(shí)間范圍查詢
        if(searchDataDto.getReceivingStartTime()!=null && !"".equals(searchDataDto.getReceivingStartTime())){
            base_query.must(QueryBuilders.rangeQuery("receive_time").
                    gte(searchDataDto.getReceivingStartTime()));//大于等于開始時(shí)間
        }
        if(searchDataDto.getReceivingEndTime()!=null && !"".equals(searchDataDto.getReceivingEndTime()) ){
            base_query.must(QueryBuilders.rangeQuery("receive_time").
                    lte(searchDataDto.getReceivingEndTime()));//小于等于結(jié)束時(shí)間
        }
        
        //設(shè)置分頁和根據(jù)創(chuàng)建時(shí)間降序排序  注意:page從0開始
        PageRequest page = PageRequest.of
                (pageNum-1, pageSize, Sort.by(Sort.Order.desc("receive_time")));
        Page<WarnData> data = esWarnDataRepository.search(base_query, page);

        return data;
    }

三、注意事項(xiàng)

  1. es entity 的日期格式問題,不支持yyyy-MM-dd HH:mm:ss,需要通過format設(shè)置格式。
  2. text 類型的字段,漢字可以進(jìn)行分詞模糊查詢,但是數(shù)字不能分詞查詢。(經(jīng)過我的測試發(fā)現(xiàn))。
  3. 分頁從0開始(和SpringDataJPA的用法類似)。

到了這里,關(guān)于SpringBoot整合Elasticsearch實(shí)現(xiàn)分頁條件查詢及注意事項(xiàng)的文章就介紹完了。如果您還想了解更多內(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整合elasticsearch8組合條件查詢

    整合過程見上一篇文章 springboot整合elasticsearch8 1.es8多條件組合查詢 2.使用scroll進(jìn)行大數(shù)據(jù)量查詢

    2024年02月16日
    瀏覽(19)
  • ElasticSearch系列 - SpringBoot整合ES:組合多個(gè)查詢條件 bool 查詢

    01. ElasticSearch 布爾查詢是什么? 在實(shí)際應(yīng)用中,我們很有可能會查詢多個(gè)值或字段。 一個(gè) bool 查詢由三部分組成: must:所有的語句都必須(must) 匹配,與 AND 等價(jià)。 must_not:所有的語句都不能(must not)匹配,與 NOT 等價(jià)。 should:至少有一個(gè)語句要匹配,與 OR 等價(jià)。 02.

    2023年04月08日
    瀏覽(27)
  • java 整合ES實(shí)現(xiàn)文檔增刪改查(多條件分頁查詢)

    本文采用ES版本為8.7.1 由于只存儲文章,僅用固定索引即可,索引用kibanna直接生成,省略索引部分的增刪查步驟 抓取返回信息是因?yàn)榘姹締栴}無法解析ES返回的正確信息,實(shí)際操作成功但是會報(bào)錯(cuò) 我這邊只需要單索引操作,有需求的可以讓前端傳過來

    2024年02月13日
    瀏覽(24)
  • ElasticSearch系列 - SpringBoot整合ES:查詢條件 query 和過濾條件 filter 的區(qū)別

    01. Elasticsearch 查詢條件和過濾條件的區(qū)別? Elasticsearch中的查詢條件和過濾條件都是用于搜索和過濾文檔的條件,但它們之間有一些區(qū)別。 查詢條件是用于計(jì)算文檔相關(guān)度得分的條件,它會將所有符合條件的文檔按照相關(guān)度得分從高到低排序,并返回前N個(gè)文檔。查詢條件可以

    2024年02月14日
    瀏覽(25)
  • 【案例實(shí)戰(zhàn)】SpringBoot整合Redis實(shí)現(xiàn)緩存分頁數(shù)據(jù)查詢

    【案例實(shí)戰(zhàn)】SpringBoot整合Redis實(shí)現(xiàn)緩存分頁數(shù)據(jù)查詢

    正式觀看本文之前,設(shè)想一個(gè)問題,高并發(fā)情況下,首頁列表數(shù)據(jù)怎么做? 類似淘寶首頁,這些商品是從數(shù)據(jù)庫中查出來的嗎?答案肯定不是,在高并發(fā)的情況下,數(shù)據(jù)庫是扛不住的,那么我們要怎么去扛住C端大并發(fā)量呢,這塊我們可以借助Redis,我們知道Redis是一個(gè)基于內(nèi)

    2024年02月09日
    瀏覽(22)
  • SpringBoot整合mybatis-plus實(shí)現(xiàn)分頁查詢(建議收藏)

    SpringBoot整合mybatis-plus實(shí)現(xiàn)分頁查詢(建議收藏)

    一、前言 ? ? ? ? 最近學(xué)習(xí)了SpringBoot分頁查詢的兩種寫法,一種是手動實(shí)現(xiàn),另一種是使用框架實(shí)現(xiàn)?,F(xiàn)在我將具體的實(shí)現(xiàn)流程分享一下。 二、手動實(shí)現(xiàn)分頁查詢 ????????先復(fù)習(xí)一下,SQL中的limit,下面一行sql語句的意思是從第二個(gè)數(shù)據(jù)開始查,查詢出兩條數(shù)據(jù)

    2024年01月16日
    瀏覽(17)
  • ES(Elasticsearch)+SpringBoot實(shí)現(xiàn)分頁查詢

    1.ES介紹 ??ES作為一個(gè)搜索工具,寄托于Lucene之上,提供了方便的數(shù)據(jù)存儲和搜索服務(wù),一般的用它來作為網(wǎng)頁數(shù)據(jù)索引以及存儲用戶畫像(即用戶標(biāo)簽)數(shù)據(jù),可以提供復(fù)具有復(fù)雜的查詢條件的服務(wù)。例如在網(wǎng)頁索引中,通過倒排的方式索引的方式,對文檔進(jìn)行分詞存儲,

    2024年02月16日
    瀏覽(24)
  • ElasticSearch學(xué)習(xí)簡單使用(索引、文檔、分頁查詢、多條件查詢)

    ElasticSearch學(xué)習(xí)簡單使用(索引、文檔、分頁查詢、多條件查詢)

    APIfox接口在線文檔 安裝連接 下載鏈接(各個(gè)系統(tǒng),也包括docker) 打開 我下載的時(shí)window版本,直接就是zip壓縮包解壓后直接使用 執(zhí)行bin目錄下的這個(gè)bat文件,就會自動打開終端運(yùn)行了。 大部分使用http請求進(jìn)行學(xué)習(xí)。 你需要一個(gè)接口工具,postman,APIfox,或者一些瀏覽器插件

    2024年02月03日
    瀏覽(25)
  • SpringBoot ElasticSearch 實(shí)現(xiàn)訂單的分頁查詢 【SpringBoot系列17】

    SpringBoot ElasticSearch 實(shí)現(xiàn)訂單的分頁查詢 【SpringBoot系列17】

    SpringCloud 大型系列課程正在制作中,歡迎大家關(guān)注與提意見。 程序員每天的CV 與 板磚,也要知其所以然,本系列課程可以幫助初學(xué)者學(xué)習(xí) SpringBooot 項(xiàng)目開發(fā) 與 SpringCloud 微服務(wù)系列項(xiàng)目開發(fā) elasticsearch是一款非常強(qiáng)大的開源搜索引擎,具備非常多強(qiáng)大功能,可以幫助我們從海

    2024年02月09日
    瀏覽(17)
  • Springboot集成ElasticSearch實(shí)現(xiàn)簡單的crud、簡單分頁、模糊查詢

    Springboot集成ElasticSearch實(shí)現(xiàn)簡單的crud、簡單分頁、模糊查詢

    pom.xml引入ElasticSearch application.yml配置 啟動類加入注解@EnableElasticsearchRepositories ElasticSearchEntity Repository類繼承ElasticsearchRepository ElasticSearchService ElasticSearchController 測試 查看創(chuàng)建的索引(相當(dāng)于MySQL的表) method:GET 刪除索引 method:DELETE 查看索引里的全部數(shù)據(jù), elastic是實(shí)體類

    2023年04月18日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包