p波高尖代表什么| 今天是什么月| 喜大普奔是什么意思| 被蚂蚁咬了涂什么药| 充饥是什么意思| 刘晓庆什么星座| 坑坑洼洼是什么意思| 山竹和什么不能一起吃| 热淋是什么意思| 三岁宝宝喝什么奶粉比较好| 手机壳买什么材质的好| 挑染是什么意思| 汗蒸是什么意思| 小暑是什么意思啊| 头皮很痒是什么原因| 耳朵后面有痣代表什么| 灰指甲挂号挂什么科| 1990年是什么年| 信必可为什么轻微哮喘不能用| 58年属狗是什么命| 负数是什么意思| 元老是什么意思| 小孩子眼睛眨得很频繁是什么原因| 反话是什么意思| 无学历学什么技术好| 刺史是什么官职| 貉是什么动物| 凤辇是什么意思| 汗蒸有什么好处| 突然尿频是什么原因| 检查淋巴挂什么科| 心绞痛吃什么药最管用| 体内火气大吃什么降火| 孤军奋战是什么意思| 上唇肿胀是什么原因| 茶叶有什么功效| 同学群取什么名字好| 奇花初胎矞矞皇皇是什么意思| 脾虚是什么症状| 修女是什么意思| tct是什么检查| 什么叫游走性关节疼痛| 扁桃体长什么样| 正常白带是什么样的| iga是什么意思| 卡帝乐鳄鱼什么档次| 一月十一是什么星座| 什么最赚钱| 农村合作医疗什么时候交| 凝胶是什么| 吃什么可以修复子宫内膜| 娃娃鱼属于什么类动物| 海关是做什么的| 5月2号是什么星座| 全麻后需要注意什么| 秘鲁说什么语言| 糖醇是什么意思| 男人气血不足吃什么药| 纪是什么意思| 织物是什么材质| 怙恃是什么意思| 日晡潮热是什么意思| 胸腔疼挂什么科| 菜鸟裹裹是什么快递| 买什么化妆品好| 福报是什么| 嗜睡是什么原因| 奶奶的妈妈叫什么| 时间h代表什么| 什么血型好| 大校军衔相当于什么官| 嚼舌根是什么意思| 一直干呕是什么原因| 看皮肤挂什么科| 今年农历是什么年号| 佛龛是什么意思| ipi是什么意思| 见什么知什么| 淡盐水有什么作用和功效| 安眠药有什么副作用| 苏武牧羊是什么意思| 眼神迷离什么意思| 去湿气吃什么食物| 血淀粉酶是检查什么的| 促黄体生成素是什么| 11度穿什么衣服| 科班出身是什么意思| 白带增多是什么原因| 蓝天白云是什么意思| 为什么有白头发| 热射病是什么病| 什么水果最老实| 女方起诉离婚需要什么证件| 孕妇鼻子出血是什么原因| lee是什么牌子| 天天洗头发有什么危害| 脐动脉2条是什么意思| 陈皮泡酒喝有什么功效和作用| 榴莲什么样的好吃| 胆固醇低是什么原因| 叶仙是什么植物| 什么东西驱蛇效果最好| 酸辣粉是什么粉| 妲己是什么生肖| 月经老提前是什么原因| 筋皮是什么肉| 全身大面积湿疹暗示着什么| 心动过速吃什么药最好| 沐五行属性是什么| 婴儿什么时候长牙| 胃出血恢复期吃什么好| 脑梗病人吃什么营养恢复最好| 98年属虎的是什么命| 发生了什么| 肺部纹理增粗是什么意思| 晚上喝牛奶有什么好处和坏处| 不知道饿是什么原因| 六月份生日是什么星座| 海参不能和什么一起吃| balance什么意思| 雪青色是什么颜色| 99年属什么的| 有缘无分什么意思| 肾阴虚吃什么药| 胆红素升高是什么原因| 什么得什么造句| 什么是盗汗症状| 离婚要什么手续| 静脉曲张吃什么药最好| 瞬息万变是什么意思| 医美是什么专业| 做梦梦见僵尸是什么预兆| 杯弓蛇影告诉我们什么道理| 无可奈何的笑是什么笑| 全蛋液是什么意思| bp是什么的缩写| mri检查是什么| 玉米笋是什么| 菩提树长什么样| 晨起嘴苦是什么原因| 羲什么意思| 肩周炎吃什么药最好| 八字刘海适合什么脸型| 心脾两虚吃什么药| 井柏然原名叫什么| 料酒是什么| 国际劳动日是什么生肖| pos什么意思| 胃痛胃胀吃什么好| st是什么意思| 9.20号是什么星座| 青石是什么石头| 肆意洒脱 什么意思| 手术后放疗起什么作用| 小肚子疼是什么原因| 脂肪肝什么意思| 老人喝什么牛奶好| 缓苗是什么意思| 胎停有什么症状或征兆吗| 境遇是什么意思| 脚指甲发白是什么原因| 湖南省的简称是什么| 恋童癖是什么意思| 月经不调去医院挂什么科| 什么是风热感冒| 蜂胶有什么作用和功效| 舌头无苔是什么原因| 脾胃不好吃什么| 大姨妈黑色是什么原因| 尿毒症是什么病| 牛头马面指什么生肖| 原生家庭是什么| 什么来什么去的四字词语| 土豆和什么不能一起吃| 老鼠爱吃什么食物| 冬天用什么护肤品好| 脑死亡是什么意思| 相思病是什么意思| 十二是什么意思| 蜻蜓是什么生肖| 小便有血尿是什么原因| 伤口感染用什么药| 梦见豆腐是什么意思| 脑萎缩是什么原因引起的| 减脂是什么意思| 牙疼有什么办法| 来大姨妈吃什么水果好| 做完人流需要注意什么| 耳钉后面的塞子叫什么| 肠痈是什么病| 手发麻是什么原因| 杜鹃花什么时候开花| 双重性格是什么意思| 肾病可以吃什么水果| 甲胎蛋白增高说明什么| 以逸待劳是什么意思| 标准差是什么| 咖啡伴侣是什么东西| 扬是什么生肖| 心脏为什么会突然刺痛| 1989年属蛇是什么命| 马鞍皮是什么皮| 为什么会尿频| 什么是黄体酮| 时间单位是什么| 米线是什么材料做的| 茬是什么意思| 甲子年是什么意思| 服兵役是什么意思| 癌胚抗原偏高说明什么| 护士是什么专业| uranus是什么星球| 女人贫血吃什么补血最快| 什么是低密度脂蛋白| 空调滴水是什么原因| 一个女一个以念什么| 床虱咬了要擦什么药膏| 合盘是什么意思| 大腿前侧是什么经络| 血痣是什么原因引起的| 如获至宝是什么意思| 蒙古族信仰什么教| 滴滴什么意思网络用语| 怀孕1个月有什么症状| 后背痛是什么原因| 什么是多囊| 急救物品五定是什么| 早餐吃什么英语怎么说| 成都市市长是什么级别| barbour是什么牌子| beams是什么品牌| 宫颈炎盆腔炎吃什么药效果最好| 瓜尔佳氏现在姓什么| 没有生抽可以用什么代替| 同房出血是什么原因造成的| 什么是生酮饮食| 脂溶性是什么意思| 富不过三代是什么意思| 浅表性胃炎伴糜烂用什么药| 人工降雨的原理是什么| 谢字五行属什么| 桃子和什么相克| 猪脆肠是什么器官| 老年人全身无力是什么原因| 鱼鳞病是什么| 制动什么意思| 脸上长痣是什么原因造成的| 立夏吃什么蛋| 沉网和浮网有什么区别| 灰指甲用什么药好| 晚上喝蜂蜜水有什么好处和坏处| fazeya是什么牌子| 七喜是什么饮料| 扁平足为什么不能当兵| 枸橼酸西地那非片是什么药| 老年人腿肿是什么原因引起的| 美国为什么打越南| 长脸适合什么发型女| 晚上三点是什么时辰| 怀孕初期吃什么对胎儿发育好| 意淫什么意思| 冬眠的动物有什么| 6月19日是什么日子| 2023年是什么生肖年| 百度

四川平武大熊猫“八字步”过马路

本文详细介绍了如何在Elasticsearch 7.x中使用不同类型的Field(Text、Keyword、Date)进行分页查询,包括termQuery、termsQuery、wildcardQuery和matchPhraseQuery的应用,以及注意事项和实践心得。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Elasticsearch7.x集成网上一大堆,随便百度就行

此文章仅针对写分页查询时传入各种参数,然后的不同写法,仅供参考

实体中的部分代码

@Document(indexName = "appeal_doc")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AppealDoc implements Serializable {


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

    @Field(type = FieldType.Keyword)
    private String city;

    ......
    ......
    ......

    
    @Field(type = FieldType.Date)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 
    private Date appealDate;

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

}

分页查询的部分代码

service上注释也写了,仅针对实体上Field类型为Text,Keyword,Date三种作为示例

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        // keyword不分词,相当于: t.city  = 'cities'
        if(StrUtil.isNotEmpty(query.getCities())) {
            String cities = query.getCities();
            boolQueryBuilder.must(QueryBuilders.termQuery("city", cities));
        }
        // keyword不分词,相当于 and t.complaintEnterprise in ( 'enterprises[0]', 'enterprises[1]', ...)
        if(StrUtil.isNotEmpty(query.getEnterprises())) {
            String[] enterprises = query.getEnterprises().split(",");
            boolQueryBuilder.must(QueryBuilders.termsQuery("complaintEnterprise", enterprises));
        }
        // 相当于是 like "categoryCode%"
        if(StrUtil.isNotEmpty(query.getCategoryCode())) {
            String categoryCode = query.getCategoryCode();
            boolQueryBuilder.must(QueryBuilders.wildcardQuery("categoryCodeNames", categoryCode+"*"));
        }

        // 相当于是 like "username%"
        if(StrUtil.isNotEmpty(query.getUsername())) {
            String username = query.getUsername();
            boolQueryBuilder.must(QueryBuilders.wildcardQuery("username", username+"*"));
        }

        // 相当于是 like "businessCode%"
        if(StrUtil.isNotEmpty(query.getBusinessCode())) {
            String businessCode = query.getBusinessCode();
            boolQueryBuilder.must(QueryBuilders.wildcardQuery("businessCodeNames", businessCode+"*"));
        }

        // Text自动分词,matchPhrase:模糊匹配且完整
        // 相当于:  and ( t.appealContent = '%searchKey[0]%' or t.appealContent = '%searchKey[1]%' or...)
        String searchKey = query.getHotWords();
        if(StrUtil.isNotEmpty(searchKey)) {
//            boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("appealContent", searchKey));
            BoolQueryBuilder boolQueryBuilder2 = QueryBuilders.boolQuery();
            for (String s : searchKey.split(",")) {
                boolQueryBuilder2.should(QueryBuilders.matchPhraseQuery("appealContent", s));
            }
            boolQueryBuilder.must(boolQueryBuilder2);
        }

        String appealContent = query.getAppealContent();
        if(StrUtil.isNotEmpty(appealContent)) {
            boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("appealContent", appealContent));
        }

        // 申诉时间 相当于:  and t.appealDate between #{startTime} and #{endTime}
        if (query.getAppealStartDate() != null && query.getAppealEndDate() != null ){
            Date startTime = query.getAppealStartDate();
            Date endTime = query.getAppealEndDate();
            boolQueryBuilder.must(QueryBuilders.rangeQuery("appealDate").from(startTime).to(endTime).includeUpper(true).includeLower(true));
        }

        // ES分页搜索
        NativeSearchQuery nativeSearchQuery = new NativeSearchQueryBuilder()
                //查询条件
                .withQuery(boolQueryBuilder)
                //分页,page从0开始
                .withPageable(PageRequest.of(pageNum, pageSize))
                //排序
                .withSorts(SortBuilders.fieldSort("appealDate").order(SortOrder.DESC))
                //高亮字段显示
                .withHighlightFields(
                        new HighlightBuilder.Field("appealContent").preTags("<em>").postTags("</em>")
                )
                .build();
        SearchHits<AppealDoc> docs = elasticsearchRestTemplate.search(nativeSearchQuery, AppealDoc.class);

部分使用后的感觉

1. must? => and

2. should => or?

3. 高亮显示的仅是当前字段的某部分数据(存在搜索条件的前后语句而已),并非全部

4.时间如果使用LocalDate/LocatDateTime反正是各种坑,自己转一次Date感觉方便点

5.分页查询时pageNum/curent/pages(当前页)是以0开始的

6.保存和更新是一起的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
人被老鼠咬了什么预兆 舌苔厚黄是什么病 欲仙欲死是什么意思 武当山求什么最灵 中药学是什么
4.22是什么日子 日本豆腐是什么材料 哈森鞋子属于什么档次 失眠看什么科最好 腹主动脉钙化是什么意思
不想吃饭吃什么药 擦边球是什么意思 2023年什么年 围度什么意思 为什么胸会痛
血铅是什么 什么贵人能治孤辰寡宿 AC是胎儿的什么意思 小孩拉肚子吃什么食物 炼乳是什么
儿童节送老婆什么礼物hcv9jop4ns1r.cn 胰腺上长瘤意味着什么wuhaiwuya.com 义是什么意思shenchushe.com 歧途什么意思hcv9jop5ns0r.cn 在眼皮老跳是什么征兆hcv8jop7ns7r.cn
拉水便吃什么药hcv8jop0ns2r.cn 喝普洱茶有什么功效hcv8jop9ns2r.cn 三伏贴能治什么病hcv8jop2ns9r.cn 月字五行属什么gysmod.com 结石是什么原因造成的hcv8jop4ns4r.cn
力不从心的意思是什么hcv8jop5ns0r.cn 录取线差是什么意思hcv8jop3ns3r.cn 汉堡里面的白色酱是什么酱hcv9jop7ns3r.cn 代表友谊的花是什么花hcv8jop6ns9r.cn 西洋参长什么样子图片hcv8jop6ns4r.cn
口且念什么hcv8jop5ns4r.cn 梦到很多蛇是什么意思cj623037.com 家里停电打什么电话hcv8jop2ns6r.cn 大什么针hcv7jop9ns8r.cn 实质性是什么意思bfb118.com
百度