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;
    }
相关推荐
Me4神秘3 小时前
国家级互联网骨干直联点及容量、互联网交换中心
大数据·信息与通信
zandy10115 小时前
全链路可控+极致性能,衡石HENGSHI CLI重新定义企业级BI工具的AI协作能力
大数据·人工智能·ai analytics·ai native·agent-first
ShawnLiaoking5 小时前
pycharm 上传更新代码
ide·elasticsearch·pycharm
果粒蹬i7 小时前
Elasticsearch 单机部署实测:安装流程、常见坑点与远程访问配置
大数据·elasticsearch·搜索引擎
AC赳赳老秦7 小时前
OpenClaw数据库高效操作指南:MySQL/PostgreSQL批量处理与数据迁移实战
大数据·数据库·mysql·elasticsearch·postgresql·deepseek·openclaw
小王毕业啦7 小时前
2006-2023年 省级-建成区绿化覆盖率数据(xlsx)
大数据·人工智能·数据挖掘·数据分析·社科数据·实证分析·经管数据
AEIC学术交流中心8 小时前
【快速EI检索 | SPIE出版】第六届中国膜计算论坛暨2026年人工智能、大数据与电气自动化国际学术会议(CWMC&AIBDE 2026)
大数据·人工智能·量子计算
历程里程碑9 小时前
二叉树---二叉树的中序遍历
java·大数据·开发语言·elasticsearch·链表·搜索引擎·lua
AC赳赳老秦9 小时前
OpenClaw text-translate技能:多语言批量翻译,解决跨境工作沟通难题
大数据·运维·数据库·人工智能·python·deepseek·openclaw
Elastic 中国社区官方博客10 小时前
使用 Elasticsearch + Jina embeddings 进行无监督文档聚类
大数据·人工智能·elasticsearch·搜索引擎·全文检索·jina