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

ES簡單教程(四)使用ElasticsearchRestTemplate多條件分頁查詢(復(fù)雜版)

這篇具有很好參考價值的文章主要介紹了ES簡單教程(四)使用ElasticsearchRestTemplate多條件分頁查詢(復(fù)雜版)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

TIPS:本文實現(xiàn)類似數(shù)據(jù)庫后臺管理系統(tǒng)的多條件分頁查詢。文章來源地址http://www.zghlxwxcb.cn/news/detail-509677.html

package com.test.impl;

/**
 * TestIndex實現(xiàn)類impl,實現(xiàn)多條件分頁查詢
 */
@Service
public class TestIndexServiceImpl implements TestIndexService {

    private static final Logger LOGGER = LoggerFactory.getLogger(TestIndexServiceImpl.class);

    @Autowired
    private ElasticsearchRestTemplate elasticsearchRestTemplate;

	//TestIndexListQuery query為條件查詢對象,封裝了一些需要查詢的字段
    @Override
    public Page<TestIndex> list(TestIndexListQuery query) {
        Integer pageNum = query.getPageNum();
        Integer pageSize = query.getPageSize();

        //組裝查詢條件 must類似and匹配到所有字段后進(jìn)行組合查詢
        BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
        if(StringUtils.isNotBlank(query.getItem_id())){
            queryBuilder.must(termQuery("item_id", query.getItem_id()));
        }
        if(StringUtils.isNotBlank(query.getItem_name())){
            //類似like的操作,針對不能分詞的字段進(jìn)行模糊查詢,數(shù)據(jù)量大不推薦,性能不友好
            queryBuilder.must(wildcardQuery("item_name", "*"+query.getItem_name()+"*"));
        }
        if(StringUtils.isNotBlank(query.getArea_code())){
            queryBuilder.must(termQuery("area_code", query.getArea_code()));
        }
        if(StringUtils.isNotBlank(query.getUser_name())){
            queryBuilder.must(QueryBuilders.wildcardQuery("user_name", "*"+query.getUser_name()+"*"));
        }
        if(StringUtils.isNotBlank(query.getPhone())){
            queryBuilder.must(termQuery("phone", query.getPhone()));
        }
        if (Objects.nonNull(query.getStartTime())) {
            queryBuilder.must(QueryBuilders.rangeQuery("createdatetime").gte(query.getStartTime()));
        }
        if (Objects.nonNull(query.getEndTime())) {
            queryBuilder.must(QueryBuilders.rangeQuery("createdatetime").lte(query.getEndTime()));
        }

        NativeSearchQuery build = new NativeSearchQueryBuilder()
                .withQuery(queryBuilder)
                .withPageable(PageRequest.of(pageNum, pageSize))
                .withHighlightFields(//字段高亮設(shè)值
                        new HighlightBuilder.Field("seek_title").preTags("<em>").postTags("</em>")
//                        new HighlightBuilder.Field("seek_title").preTags("<span style='color:blue'>").postTags("</span>")
                )
                .build();
        LOGGER.info("列表查詢的語句:{}", build.getQuery().toString());

        SearchHits<Seek> search = elasticsearchRestTemplate.search(build, Seek.class);
        SearchPage<Seek> page = SearchHitSupport.searchPageFor(search, build.getPageable());

        //高亮結(jié)果集,也可以用page.getHighlightFields()獲取
        List<Seek> list = new ArrayList<>();
        for (SearchHit<Seek> each : page) {
            Seek vo = each.getContent();
            //高亮設(shè)值
            if (each.getHighlightFields().get("seek_title") != null) {
                vo.setSeek_title(each.getHighlightFields().get("seek_title").get(0));
            }
            list.add(vo);
        }
        //組裝分頁對象
        Page<Seek> pageInfo = new PageImpl<>(list, build.getPageable(), search.getTotalHits());
//        PageImpl<Seek> pageInfo = new PageImpl<Seek>(list, build.getPageable(), search.getTotalHits());
        return pageInfo;
    }

}

到了這里,關(guān)于ES簡單教程(四)使用ElasticsearchRestTemplate多條件分頁查詢(復(fù)雜版)的文章就介紹完了。如果您還想了解更多內(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)文章

  • java 整合ES實現(xiàn)文檔增刪改查(多條件分頁查詢)

    本文采用ES版本為8.7.1 由于只存儲文章,僅用固定索引即可,索引用kibanna直接生成,省略索引部分的增刪查步驟 抓取返回信息是因為版本問題無法解析ES返回的正確信息,實際操作成功但是會報錯 我這邊只需要單索引操作,有需求的可以讓前端傳過來

    2024年02月13日
    瀏覽(27)
  • Elasticsearch 7.X SpringBoot 使用 ElasticsearchRestTemplate 操作 ES

    Elasticsearch 7.X SpringBoot 使用 ElasticsearchRestTemplate 操作 ES

    前面學(xué)習(xí)了es rest接口對es進(jìn)行操作的方式,并且還學(xué)習(xí)了es的分片及擴(kuò)容,有講解了幾種常見的分詞器,喜歡的小伙伴可以看下本專欄的其他文章,本篇主要將 在 SpringBoot 中使用 ElasticsearchRestTemplate 對ES進(jìn)行操作。 對于SpringBoot對ES的操作早在以前我就寫過一篇文章,但那時基

    2023年04月09日
    瀏覽(20)
  • 如何使用ES做簡單的時間條件過濾+模糊查詢+精確匹配+關(guān)鍵字排除,查詢 elasticsearch查詢結(jié)果包含或排除某些字段、_source查詢出需要的屬性名稱

    目錄 一、時間條件過濾+模糊查詢+精確匹配+排除 1. 查詢出包含 log_geo 的數(shù)據(jù) “wildcard”: { “message”: “l(fā)og_geo” } 2. 查詢某個時間段的數(shù)據(jù) 3. 條件查詢與條件排除數(shù)據(jù) 4. from 表示起始的記錄的ID 5. size 表示顯示的記錄數(shù) 6.sort排序 desc降序、asc升序? 7.should查詢在mysql中

    2024年01月18日
    瀏覽(22)
  • SpringDataJpa的使用 -- 條件查詢、排序查詢、分頁查詢

    本文以 Article.java 為數(shù)據(jù)存放類,操作接口為 ArticleRepository.java @Data lombok 的注解,用來生成 Getter、Setter、toString、hashCode 方法,當(dāng)添加該注解的同時在添加 相應(yīng)方法(如 toString())時,添加的方法不會被覆蓋。 @NoArgsConstructor lombok 的注解,用來生成 無參構(gòu)造函數(shù)。 @AllArgsCo

    2024年02月01日
    瀏覽(13)
  • 【ES常用查詢】基于ElasticsearchRestTemplate及NativeSearchQuery的查詢

    包含當(dāng)前es所有的查詢, 需要什么代碼直接照搬,改個參數(shù)就行! 用的好請務(wù)必給我點贊!??!感謝愛你們!?。?為啥寫這篇文章呢: 大概是因為目前公司用的api跟以前的不太一樣, 以前我們是基于高標(biāo)準(zhǔn)客戶端直接做的, 但是目前這邊同事是基于ElasticsearchRestTemplate跟

    2024年02月03日
    瀏覽(17)
  • 【JaveWeb教程】(20) MySQL數(shù)據(jù)庫開發(fā)之 基本查詢、條件查詢、聚合函數(shù)、分組查詢、排序查詢、分頁查詢 詳細(xì)代碼示例講解

    【JaveWeb教程】(20) MySQL數(shù)據(jù)庫開發(fā)之 基本查詢、條件查詢、聚合函數(shù)、分組查詢、排序查詢、分頁查詢 詳細(xì)代碼示例講解

    在上次學(xué)習(xí)的內(nèi)容中,我們講解了: 使用DDL語句來操作數(shù)據(jù)庫以及表結(jié)構(gòu)(數(shù)據(jù)庫設(shè)計) 使用DML語句來完成數(shù)據(jù)庫中數(shù)據(jù)的增、刪、改操作(數(shù)據(jù)庫操作) 我們今天還是繼續(xù)學(xué)習(xí)數(shù)據(jù)庫操作方面的內(nèi)容:查詢(DQL語句)。 查詢操作我們分為兩部分學(xué)習(xí): DQL語句-單表操作

    2024年02月02日
    瀏覽(47)
  • ES 使用 Bucket Sort 對聚合結(jié)果分頁

    在 Elasticsearch 中,Bucket Sort 是一種聚合操作,用于對桶(bucket)進(jìn)行排序。它可以根據(jù)指定的字段對聚合結(jié)果中的桶進(jìn)行排序,以便按照特定的順序呈現(xiàn)數(shù)據(jù)。 Bucket Sort 和 Top Hits 有相似之處,他們之間的區(qū)別是:Bucket 是對聚合分桶的排序和分頁,而 Top Hits 是對分桶聚合中每

    2024年02月07日
    瀏覽(20)
  • es 使用 cardinality + collapse做分頁去重查詢

    1.首先我們來介紹一下cardinality的用法 cardinality 即去重計算,類似sql中 count(distinct),先去重再求和,計算指定field值的種類數(shù)。 可以看到,aggregations聚合下,返回了按名字查詢?nèi)ブ睾蟮慕Y(jié)果數(shù),但是只有去重后的條數(shù),沒有具體的數(shù)據(jù)。 2.接下來我們再看一下collapse的用法

    2024年02月01日
    瀏覽(25)
  • 使用ES同一個字段,不同條件or查詢

    使用ES同一個字段,不同條件or查詢

    需求: type 字段是使用逗號分隔的字符串,要求多個 值只要與此字段 模糊匹配,即可成功 布爾查詢(Bool Query) 布爾查詢是一種聯(lián)合查詢,可以對多個查詢條件進(jìn)行組合,布爾查詢有四個子查詢: 有時我們在查詢es時,希望能夠一次返回符合多個查詢條件的結(jié)果,如

    2024年02月11日
    瀏覽(102)
  • Java中使用es條件構(gòu)造器BoolQueryBuilder

    由于es在java中查詢沒法像mybatis那樣方便,而且es的構(gòu)造器使用也比較繁瑣,理解不是很方便,所以寫一篇文章來記錄es構(gòu)造器BoolQueryBuilder查詢時各種條件的構(gòu)造的正確姿勢。 1.構(gòu)造準(zhǔn)備 2.條件構(gòu)造 must可用filter代替,查詢效率會更高,因為must會對結(jié)果進(jìn)行_score評估 3.構(gòu)造完成

    2024年02月11日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包