Elasticsearch 8.+ 版本查询方式

1.创建索引

1.2在项目启动后执行,先判断是否有这个索引,没有则创建

java 复制代码
//判断索引是否存在
BooleanResponse troubleShootLog = elasticsearchClient.indices().exists(e -> e.index(TroubleShootLog.INDEX));
java 复制代码
 private void createTroubleShootLogIndex() {
        try {
            elasticsearchClient.indices().create(c -> c
                    .index(TroubleShootLog.INDEX)//索引名称
                    .settings(s->s.numberOfShards(numberOfShards).numberOfReplicas(numberOfReplicas))
                    .mappings(mappings -> mappings  //映射
                            .properties("docPoolId", p -> p
                                    .long_(t -> t)
                            )
                            .properties("poolFileId", p -> p
                                    .long_(t -> t) 
                            )
                            .properties("type", p -> p
                                    .long_(t -> t) 
                            )
                            .properties("opt", p -> p
                                    .integer(t -> t) 
                            )
                            .properties("userId", p -> p
                                    .long_(t -> t) 
                            )
                            .properties("keyword", p -> p
                                    .text(t -> t) 
                            )
                            .properties("aircraftTypes", p -> p
                                    .text(t -> t) 
                            )
                            .properties("docType", p -> p
                                    .text(t -> t) 
                            )
                            .properties("cratedTime", p -> p
                                    .date(t -> t.format("yyyy-MM-dd HH:mm:ss")) //
                            )
                    )
            );
        } catch (IOException e) {
            log.error(e.getMessage(),e);
        }
    }

2.查询

java 复制代码
//创建查询条件,查询text的内容
Query query = builder.bool(b -> b.must(m -> m.matchPhrasePrefix(h -> h.field("text").query(dto.getQ())))).build();
//执行查询
SearchResponse<PdfDoc> pdfDocOne = elasticsearchClient.search(s -> s
                            .index(PdfDoc.INDEX)//要查询的索引名称
                            .query(q -> q.bool(b -> b.must(query)))//查询条件
                            .highlight(setHighLight())//高亮字段
                            .from(dto.getPageNumber())//从第几页开始
                            .size(dto.getPageSize())//到第几页结束
                            .sort(so -> so.field(f -> f//排序
                                    .field("_score").order(SortOrder.Desc)
                                    .field("type").order(SortOrder.Desc)
                                    .field("heat").order(SortOrder.Desc)
                            ))
                    , PdfDoc.class
            );

private Highlight setHighLight() {
        Highlight highlight = Highlight.of(h -> h.preTags("<font color='red'>").postTags("</font>").fields("text", t -> t));
        return highlight;
    }
相关推荐
小羊没烦恼!5 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
一隅论数智5 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
尧炎科技5 天前
防潮抗变形,就选纯品梅花全桉多层板
大数据
程序员大阳5 天前
副队长大数据教程(5)--集群情况下虚拟机网络配置
大数据·集群·nat·网路
自由能燃气设备5 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远5 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
嘉立创FPC苗工5 天前
FPC与机器人的双向赋能,解锁智能装备进化新势能
大数据·人工智能·制造·fpc·电路板
AI职业加油站5 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
龙亘川5 天前
一网统管AI平台民生业务实践:基于城市数字底座赋能公积金业务服务升级
大数据·安全·智慧城市·开源软件·数据可视化·政务
码流子5 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构