ElasticSearch入门学习笔记(三)SpringBoot整合篇

ElasticSearch 批量(bluk操作)保存, 数据丢失问题  项目中使用 ElasticSearch时抛出异常 Caused by: org.springframework.data.elasticsearch.ElasticsearchException: Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages...... 阅读详情

一、项目所需

1.1导入依赖

<properties>
    <java.version>1.8</java.version>
    <!-- 统一版本 -->
    <elasticsearch.version>7.6.1</elasticsearch.version>
</properties>

导入elasticsearch

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

提前导入fastjson、lombok

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.70</version>
</dependency>
<!-- lombok需要安装插件 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

1.2创建并编写配置类–>连上ES

@Configuration
public class ElasticSearchConfig {
    // 注册 rest高级客户端 
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1",9200,"http")
                )
        );
        return client;
    }
}

1.3测试索引的操作

1、索引的创建
	@Test
	void testCreateIndex() throws IOException {
		//1、创建索引请求
		CreateIndexRequest request = new CreateIndexRequest("jd_goods");
		//2、执行创建请求
        CreateIndexResponse createIndexResponse =
                restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
        System.out.println("执行创建请求===>"+createIndexResponse);
    }
2、测试获取索引
	@Test
    void testExistIndex() throws IOException {
        GetIndexRequest request = new GetIndexRequest("kuang_index");
        boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
        System.out.println("测试获取索引===>"+exists);
    }
3、测试删除索引
	@Test
    void testDeleteIndex() throws IOException {
        DeleteIndexRequest request = new DeleteIndexRequest("kuang_index");
        AcknowledgedResponse delete = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println("是否删除成功===>"+delete);
    }
4、测试添加文档
	@Test
    void testAddDocument() throws IOException {
        //创建对象
        User user = new User("狂神说",3);
        //创建请求
        IndexRequest request = new IndexRequest("kuang_index");

        //规则
        request.id("1");
        request.timeout(TimeValue.timeValueSeconds(1));
        request.timeout("1s");

        //将我们的数据放入请求 json
        request.source(JSON.toJSONString(user), XContentType.JSON);

        //客户端发送请求 获取响应的结果
        IndexResponse indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);

        System.out.println(indexResponse.toString());
        System.out.println(indexResponse.status());//对应我们命令返回的状态 CREATED
    }
5、获取文档 判断是否存在
	@Test
    void testIsExists() throws IOException {
        GetRequest getRequest = new GetRequest("kuang_index","1");
        //不获取返回的 _source的上下文
        getRequest.fetchSourceContext(new FetchSourceContext(false));
        getRequest.storedFields("_none_");

        boolean exists = restHighLevelClient.exists(getRequest, RequestOptions.DEFAULT);
        System.out.println(exists);
    }
6、获取文档的信息
	@Test
    void testGetDocument() throws IOException {
        GetRequest getRequest = new GetRequest("kuang_index","1");
        GetResponse documentFields = restHighLevelClient.get(getRequest, RequestOptions.DEFAULT);
        System.out.println(getRequest);
        System.out.println(documentFields);
    }
7、更新文档的信息
	@Test
    void testUpdateRequest() throws IOException {
        UpdateRequest updateRequest = new UpdateRequest("test","1");
        updateRequest.timeout("1s");
        User user = new User("狂神说java",18);
        updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
        UpdateResponse updateResponse = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);

        System.out.println(updateResponse.status());
    }
8、删除文档记录
	@Test
    void testDeleteRequest() throws IOException {
        DeleteRequest request = new DeleteRequest("kuang_index","2");
        request.timeout("1s");

        DeleteResponse delete = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
        System.out.println(delete.status());
    }
9、批量插入数据
	@Test
    void testBulkRequest() throws IOException {
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("10s");

        ArrayList<User> userList = new ArrayList<>();
        userList.add(new User("kuangshen1",3));
        userList.add(new User("kuangshen2",4));
        userList.add(new User("kuangshen3",5));
        userList.add(new User("kuangshen4",6));
        userList.add(new User("kuangshen5",13));
        userList.add(new User("kuangshen6",23));
        userList.add(new User("kuangshen7",33));

        // 批处理请求
        for (int i = 0; i < userList.size(); i++) {
            bulkRequest.add(new IndexRequest("kuang_index")
                    .id(""+(i+1))
                    .source(JSON.toJSONString(userList.get(i)),XContentType.JSON));
        }
        BulkResponse bulkResponse = restHighLevelClient.bulk(bulkRequest,RequestOptions.DEFAULT);
        System.out.println(bulkResponse.hasFailures());//是否失败 返回false 代表成功
    }
10、查询
	@Test
    void testSearch() throws IOException {
        SearchRequest searchRequest = new SearchRequest(ESconst.ES_INDEX);
        //构建搜索条件
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        //高亮
        sourceBuilder.highlighter();
        //查询条件 我们可以使用 QueryBuilders 工具来实现
        //QueryBuilders.termQuery() 精确
        //QueryBuilders.matchAllQuery() 匹配所有
        TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "qinjiang1");

        MatchAllQueryBuilder allQueryBuilder = QueryBuilders.matchAllQuery();
        System.out.println("allQueryBuilder===>>"+allQueryBuilder);

        sourceBuilder.query(termQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

        //放入请求
        searchRequest.source(sourceBuilder);

        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        System.out.println(JSON.toJSONString(searchResponse.getHits()));
        System.out.println("=====================================");
        for (SearchHit documentFields : searchResponse.getHits().getHits()) {
            System.out.println(documentFields.getSourceAsMap());
        }
    }

二、ElasticSearch实战

2.1导入依赖

<properties>
    <java.version>1.8</java.version>
    <elasticsearch.version>7.6.1</elasticsearch.version>
</properties>
<dependencies>
    <!-- jsoup解析页面 -->
    <!-- 解析网页 爬视频可 研究tiko -->
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
        <version>1.10.2</version>
    </dependency>
    <!-- fastjson -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.70</version>
    </dependency>
    <!-- ElasticSearch -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
    <!-- thymeleaf -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <!-- web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- devtools热部署 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    <!--  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <!-- lombok 需要安装插件 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <!-- test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2.2编写 application.preperties配置文件

# 更改端口,防止冲突
server.port=9999
# 关闭thymeleaf缓存
spring.thymeleaf.cache=false

2.3测试controller和view

@Controller
public class IndexController {
    @GetMapping({"/","index"})
    public String index(){
        return "index";
    }
}

三、爬虫京东的数据到ES

3.1编写Config

@Configuration
public class ElasticSearchClientConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("127.0.0.1", 9200, "http")));
        return client;
    }
}

3.2编写service

因为是爬取的数据,那么就不走Dao,以下编写都不会编写接口,开发中必须严格要求编写

ContentService

	// 1、解析数据放入 es 索引中
    public Boolean parseContents(String keyword) throws Exception {
        // 获取内容
        List<Content> contents = new HtmlParseUtil().params(keyword);
        // 内容放入 es 中
        BulkRequest bulkRequest = new BulkRequest();
        bulkRequest.timeout("2m"); // 可更具实际业务是指
        for (int i = 0; i < contents.size(); i++) {
            bulkRequest.add(
                    new IndexRequest("jd_goods")
                            .id(""+(i+1))
                            .source(JSON.toJSONString(contents.get(i)), XContentType.JSON)
            );
        }
        BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
        restHighLevelClient.close();
        return !bulk.hasFailures();
    }
    // 2、根据keywords分页查询结果并高亮
    public List<Map<String,Object>> highlightBuilder(String keywords, int pageNo, int pageSize) throws IOException {
        if(pageNo <= 1){
            pageNo = 1;
        }

        //条件查询
        SearchRequest searchRequest = new SearchRequest("jd_goods");
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();

        //分页
        sourceBuilder.from(pageNo);
        sourceBuilder.size(pageSize);

        //精准匹配--因为term不会分词,而keyword也不会分词,但是IK会默认分词,所以不能在使用termQueryBuilder了
        //TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("title", keywords);
        //完全配置模式
        MatchPhraseQueryBuilder termQueryBuilder = QueryBuilders.matchPhraseQuery("title", keywords);
       
        sourceBuilder.query(termQueryBuilder);
        sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));

        //高亮
        HighlightBuilder highlightBuilder = new HighlightBuilder();
        highlightBuilder.requireFieldMatch(false);//多个高亮显示
        highlightBuilder.field("title");
        highlightBuilder.preTags("<span style='color:red'>");
        highlightBuilder.postTags("</span>");
        sourceBuilder.highlighter(highlightBuilder);

        //执行搜索
        searchRequest.source(sourceBuilder);
        SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);

        //解析结果
        ArrayList<Map<String,Object>> list = new ArrayList<>();
        for (SearchHit documentFields : searchResponse.getHits().getHits()) {
            Map<String, HighlightField> fields = documentFields.getHighlightFields();
            HighlightField title = fields.get("title");
            Map<String, Object> sourceAsMap = documentFields.getSourceAsMap();//原来的结果
            //解析高亮的字段
            if(title!=null){
                Text[] texts = title.fragments();
                String newTitle = "";
                for (Text text : texts) {
                    newTitle += text;
                }
                sourceAsMap.put("title",newTitle);//高亮字段替换掉原来的内容即可
            }
            list.add(sourceAsMap);
        }
        return list;
    }

编写controller

	@Autowired
    private ContentService contentService;
    @GetMapping("/parse/{keywords}")
    @ResponseBody
    public Boolean parses(@PathVariable("keywords") String keywords) throws Exception {
        return contentService.parseContents(keywords);
    }

    @ResponseBody
    @GetMapping("/search/{keywords}/{pageNo}/{pageSize}")
    public List<Map<String,Object>> search(@PathVariable("keywords") String keywords,
                                           @PathVariable("pageNo") int pageNo,
                                           @PathVariable("pageSize") int pageSize) throws IOException {

        return contentService.highlightBuilder(keywords,1,10);
    }

3.2爬虫工具类

public class HtmlParseUtil {
    public static void main(String[] args) throws Exception {
        new HtmlParseUtil().params("码出高效").forEach(System.out::println);
    }

    public List<Content> params(String keywords) throws Exception {
        //获取请求 https://search.jd.com/Search?keyword=java
        //前提 需要联网
        String url = "https://search.jd.com/Search?keyword="+keywords+"&enc=utf-8";
        //解析网页
        Document document = Jsoup.parse(new URL(url), 30000);

        //所有你在js中可以使用的方法 这里都能用
        Element element = document.getElementById("J_goodsList");
        //获取所有的li元素
        Elements elements = element.getElementsByTag("li");

        ArrayList<Content> goodList = new ArrayList<>();

        for (Element el : elements) {
            //关于图片特别多的网站  所有图片都是延迟加载的data-lazy-img
            String img = el.getElementsByTag("img").eq(0).attr("data-lazy-img");
            String price = el.getElementsByClass("p-price").eq(0).text();
            String title = el.getElementsByClass("p-name").eq(0).text();
            Content content = new Content();
            content.setImg(img);
            content.setTitle(title);
            content.setPrice(price);
            goodList.add(content);

        }
        return goodList;
    }
}

3.3测试效果

在这里插入图片描述

待解决问题:

1、分词时 自定义分词 需手动建.dic 添加;

2、轮询时间如何设置为秒;

ElasticSearch入门学习笔记(一)概念篇
ElasticSearch入门学习笔记(二)软件安装篇
SpringBoot集成BBOSS-ElasticSearch实现ElasticSearch客户端
阿里云Docker安装ES\ES_Head\安装部署logstash导mysql数据入ElasticSearch
在这里插入图片描述

Spring Boot集成ES7.10 es,springboot 阅读详情

相关推荐

SpringBoot整合Elasticsearch

1 SpringBoot整合Spring Data Elasticsearch Elasticsearch提供的Java客户端有一些不太方便的地方: 很多地方需要拼接Json字符串,在java中拼接字符串有多恐怖你应该懂的 需要自己把对象序列化为json存储 查询到结果也需要自己反序列化为对象 因此,我们这里就不讲解原生的Elasticsearch客户端API了。 而是学习Spring提供的套...

君临天下 10万+

Elastic stack 技术栈学习(十一)—— 京东项目实战

一、项目搭建 1.1 新建Module 在上一篇博客使用的empty project里新建一个module。 选spring框架。 命名。(我需要该java版本为8) 选依赖。 finish。 删一下用不到的文件。 1.2 添加依赖、添加静态资源等准备工作 仿照上次测试api使用的spring-es-api模块,把改动的地方直接搬过来。 Elastic stack技术栈学习(九)—— SpringBoot集成ES_玛丽莲茼蒿的博客-优快云博...

qq_44886213的博客 4160

elasticsearch基本入门学习笔记

Elasticsearch学习笔记一、ElasticSearch概述历史谁在使用ES和Solr二、ElasticSearch安装1、安装2、熟悉目录3、启动三、elasticsearch-head(可视化界面)四、kibana(测试工具)五、ElasticSearch核心概念 一、ElasticSearch概述 官网: https://www.elastic.co/cn/downloads/elasticsearch. Elaticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可

chwensrong的博客 4456

ES BulkRequest 写入索引数据失败排查和解决

1,查看我们的索引mapping有没有问题,是不是索引的数据格式导致我们数据写入不进去,基本上百分之九十就是这个问题,但是我们的并不是。我们的日期格式在es是yyyymmdd hhmmss格式但是这里是个时间蹉格式,肯定就不对了,但是你会说我jsonfamart也不行吗?这样也不行,我序列化的时候tostring不行吗,答案是不行的,只有在序列化的时候转换一下。问题场景:1,使用BulkRequest写入索引数据不生效,接口正常返回,索引没有数据。这个错就很明显了我们的时间格式不对对不对,咋解决呢?...

6632

springboot+elasticsearch实现一个搜索引擎的功能

springboot+elasticsearch实现一个搜索引擎的功能 一、elasticsearch的安装 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。(如何安装elasticsearc...

java_jntm的博客 6823

ElasticSearch8 - SpringBoot整合ElasticSearch

本文介绍了 SpringBoot 整合 ElasticSearch 的两种方案,但均只是简单提及,更详细的用法需要自行查看官方文档。

王谷雨的博客 4561

ELK学习笔记

ElasticSearch 安装搭建步骤见博客: https://blog.csdn.net/weixin_43887814/article/details/112474285 为什么ElasticSearch.yml是9200端口,但是项目中链接要配置9300? 9200作为Http协议,主要用于外部通讯 9300作为Tcp协议,jar之间就是通过tcp协议通讯 ES集群之间是通过9300进行通讯 kibana链接elasticSearch配置9200 es主键? es中默认将id作为主键,数据同步至_

博客 338

springCloud整合Elasticsearch 之 Springboot整合ES

引入依赖 maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>

liuerchong的博客 4290

《SpringBoot篇》16.SpringBoot整合Elasticsearch

注:公司中大部分也是对于管理日志信息使用es,我们也是,这里做简单的教学,之后会有更加完整的ES学习介绍。说明:ES(Elasticsearch)Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

陈老老老板的博客 2万+

RT-Thread新手必看:FMT飞控移植中的5个常见坑及解决方案

本文针对RT-Thread新手在移植FMT开源飞控时遇到的5大核心挑战,提供了深度解决方案。内容涵盖SCons构建系统配置、RT-Thread版本API兼容性处理、BSP与设备驱动适配、TOML系统配置解析以及算法模块集成调试,帮助开发者高效避坑,成功完成飞控移植。

gin88的博客 250

555时基芯片的5种经典电路设计:从方波发生器到PWM调光实战

本文深入解析了555时基芯片的5种经典电路设计,从基础的无稳态方波发生器、单稳态触发器,到实用的占空比可调PWM信号源,并重点介绍了如何引入TVS保护电路增强系统鲁棒性。最后通过一个带保护的PWM LED调光台灯实战项目,综合展示了信号生成、功率驱动与电路保护的核心技术,是电子爱好者掌握模拟电路设计与应用的绝佳指南。

weixin_29207439的博客 491

SpringBoot整合ES

NoSQL解决方案已经讲完了两种技术的整合了,Redis可以使用内存加载数据并实现数据快速访问,MongoDB可以在内存中存储类似对象的数据并实现数据的快速访问,在企业级开发中对于速度的追求是永无止境的。下面的内容也是一款NoSQL解决方案,只不过他的作用不是为了直接加速数据的读写,而是加速数据的查询的,叫做ES技术。ES(Elasticsearch)是一个分布式全文搜索引擎,重点是全文搜索。那什么是全文搜索呢?

ITBOY_ITBOX博客 2万+

思科路由器、交换机组网实验报告

通过思科模拟器搭建路由交换网络

ghj528的博客 1335

【二十】springboot整合ElasticSearch实战(万字篇)

学习springboot整合ElasticSearch7.X版本,实现小案例,springboot整合ElasticSearch实战(万字篇)

weixin_56995925的博客 1万+

从零开始:使用Mask2Former训练你的专属数据集

本文详细介绍了如何从零开始使用Mask2Former训练自定义数据集。内容涵盖环境搭建、数据准备(将LabelMe格式转换为COCO格式)、数据集注册与模型配置、训练启动与调试,以及最终的模型推理与应用。通过实战步骤和常见问题解决方案,帮助读者掌握使用Mask2Former进行实例分割的核心流程,实现专属模型的训练与部署。

weixin_28678151的博客 450

GROMACS+PLUMED联合安装避坑指南:为什么你的plumed patch总是失败?

本文深入解析GROMACS与PLUMED联合安装中补丁失败的常见原因,并提供详细的避坑指南。针对版本兼容性、环境配置和编译选项等关键问题,给出从源码选择、环境搭建到手动合并补丁的完整解决方案,帮助用户成功整合这两个强大的分子动力学工具,实现增强采样模拟。

weixin_29302047的博客 288

Elasticsearch简介及SpringBoot整合ES实例

Elasticsearch简介 1.1 Elasticsearch(以下简称ES)定义 Elasticsearch 是一个开源的搜索引擎。 建立在全文搜索引擎库 Apache Lucene 基础之上。它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。 Elasticsearch ...

weixin_42184707的博客 8861

超级全的PCB LAYOUT高速信号走线指南——简化应用版

在PCB Layout中,几乎涵盖了所有的高速信号走线指南。包括了TF/SD、HDMI、LVDS、DVP、eDP、MIPI、USB2.0、USB3.0、MAC、BT.1120、PCIE高速信号等等。此版本为简化版。

bhxc809751502的博客 8549

SpringBoot:SpringBoot整合Elasticsearch案例

声明:原作者:微信公众号:悟空聊架构 文章目录声明:原作者:微信公众号:悟空聊架构前言一、Elasticsearch 组件库介绍二、整合检索服务1.1 添加搜索服务模块1.2 配置 Maven 依赖1.3 注册搜索服务到注册中心1.4 添加 ES 配置类1.5 测试 ES Client 自动加载1.6 测试 ES 简单插入数据1.7 测试 ES 查询复杂语句1.7.1 构造检索条件17.2 获取命中记录的详情1.7.3 获取年龄分布聚合信息1.7.4 获取平均薪资聚合信息三、实战:同步 ES 数据3.1 定

欢迎来到 ABin-阿斌的博客:写一生代码,创一世佳话,筑一览芳华。 2万+

iOS远程真机之ios-minicap安装使用完全指南

minicap 是开源项目 STF 中的高速截图工具。STF利用此工具不断的传输图片信息并在web端绘制实现 以前只有Android版本,最近有新的ios版本,现在就安装过程中遇到的一些问题进行分享(ps:感谢sorccu 在issue里面给我的指点) 首先上地址:https://github.com/openstf/ios-minicap 你可以git clone或者直接下载zip包。

甫式人生 1万+

Qt实现窗口自适应分辨率大小

如果希望窗口大小始终保持与屏幕分辨率一致,可以将上述代码放在窗口的resizeEvent()函数中。这样,每当窗口大小发生变化时,都会自动调用resizeEvent()函数,从而实现窗口大小的自适应调整。在Qt中,可以通过一些简单的方法实现窗口大小随分辨率变化而自适应调整。获取到当前屏幕的分辨率后,可以根据需要调整窗口的大小。无论在何种分辨率下运行应用程序,窗口都能够正确地自动调整大小,提供更好的用户体验。除了调整窗口大小,还可以考虑将窗口设置为最大化,以充分利用屏幕空间。步骤2:调整窗口大小。

FuJavascript的博客 3655

Springboot3整合Elasticsearch8(elasticsearch-java)

本文介绍了Elasticsearch Java客户端的选择与使用。推荐使用Elasticsearch Java API Client(7.15+版本)或Spring Data Elasticsearch(SpringBoot 3+),而RestHighLevelClient已废弃。详细讲解了SpringBoot3整合Spring Data Elasticsearch的步骤,包括配置、实体类注解、CRUD操作等核心功能。重点解析了通过继承ElasticsearchRepository实现的分页查询、条件过滤等

TinpeaV的博客 4769

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【SpringBoot高级篇】SpringBoot集成Elasticsearch搜索引擎

SpringBoot整合Elasticsearch1. 什么是Elasticsearch?2. 安装并运行Elasticsearch2.1 拉取镜像2.2 启动镜像3. 安装kibana3.1 拉取kibana镜像3.2 启动kibana镜像4. Elasticsearch基本概念索引(Index)文档(Document)类型(Type)文档元数据(Document metadata)字段(Fields)4.1 全文搜索(Full-text Search)倒排索引(Inverted Index)节点 &am

输入技术、输出想法 7370

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SpringBoot整合ElasticSearch(ES)

值得注意的一点因为es存储的数据是json形式的,所以需要采用JsonObject,Json,Gson,ObjectMapper等json解析工具进行java对象的转换。官方有两个整合方式,一种是Spring封装的,一种是原生的(官方推荐),本人工作时用的也是原生的,原因是spring封装的使用起来有点局限性,反正我认为不好用。通过强大的查询和分析功能,可以帮助用户快速定位和解决问题。推荐系统:Elasticsearch可以通过基于内容的推荐算法,根据用户的历史行为和偏好,为用户推荐相关的内容或产品。

qq_50930205的博客 1550

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SpringBoot整合Easy-Es

Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient 的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过Mybatis-Plus(简称MP),那么您基本可以零学习成本直接上手EE,EE是MP的Es平替版,在有些方面甚至比MP更简单,同时也融入了更多Es独有的功能,助力您快速实现各种场景的开发.

qq_65142821的博客 3168
上一篇: ElasticSearch入门学习笔记(二)软件安装篇
下一篇: Linux服务器中Mysql5.7数据库自动备份及脚本任务实现【整合篇】
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值