当前位置: 首页 > news >正文

个人网站吗怎么样做seo

个人网站吗,怎么样做seo,有电脑网站怎样建手机,青海休闲网站建设公司更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 整合 Elasticsearch 8.x (二)使用Repository 1. 环境准备1.1 项目依赖1.2 Elasticsearch 配置 2. 使用Repository的基本步骤2.1 创建实体类2.2 创…

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》
期待您的点赞👍收藏⭐评论✍

整合 Elasticsearch 8.x (二)使用Repository

  • 1. 环境准备
    • 1.1 项目依赖
    • 1.2 Elasticsearch 配置
  • 2. 使用Repository的基本步骤
    • 2.1 创建实体类
    • 2.2 创建 Repository 接口
      • 2.2.1 主要作用和优点
      • 2.2.2 使用场景
    • 2.3 服务层实现
    • 2.4 控制器层
  • 3. 测试应用
    • 3.1 启动 Elasticsearch
    • 3.2 启动 Spring Boot 应用
    • 3.3 测试 API
  • 4. 总结

上一篇文章介绍了 Spring Boot 3 整合 Elasticsearch 8.x 的几种客户端形式,除此之外,Spring Data 对 Elasticsearch 还提供了 Repository 支持,与前面讨论的JPA Repository 一样,其基本原理是根据方法名称自动为你构建查询,提供了更简便的数据搜索和分析功能。本文将介绍如何使用 Spring Data Elasticsearch Repository 来构建一个简单的搜索应用。

1. 环境准备

1.1 项目依赖

pom.xml 中添加以下依赖:

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

确保 spring-boot-starter-data-elasticsearch 的版本与 Spring Boot 3 兼容。

1.2 Elasticsearch 配置

application.propertiesapplication.yml 中配置 Elasticsearch 的连接信息:

spring:elasticsearch:uris: "http://localhost:9200"socket-timeout: "10s"username: "user"password: "secret"

2. 使用Repository的基本步骤

2.1 创建实体类

我们定义一个 Product 实体类,表示产品信息:

package com.coderjia.boot318es.bean;import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;/*** @author CoderJia* @create 2024/11/3 下午 04:37* @Description**/
@Data
@Document(indexName = "products")
@AllArgsConstructor
public class Product {@Idprivate String id;private String name;private String description;private double price;
}

2.2 创建 Repository 接口

ElasticsearchRepository 是 Spring Data Elasticsearch 提供的一个接口,用于简化与 Elasticsearch 交互的操作。它继承自 CrudRepositoryPagingAndSortingRepository,扩展了基本的 CRUD(创建、读取、更新、删除)功能,支持分页和排序,还提供了对 Elasticsearch 特有的操作支持。使用 ElasticsearchRepository,开发者可以快速构建功能全面的数据访问层,而无需编写复杂的 Elasticsearch 客户端代码。

2.2.1 主要作用和优点

  1. 简化数据操作:提供了基础的 CRUD 方法,如 save()findById()findAll()deleteById() 等,方便开发者直接使用。
  2. 自定义查询:通过定义接口中的方法(如 findByName(String name)),可以自动生成符合方法命名规范的查询。
  3. 分页与排序:内置了分页和排序支持,方法如 findAll(Pageable pageable) 可以直接返回分页数据。
  4. 与 Spring 无缝集成:使用 Spring 的依赖注入和配置机制,无需手动创建或管理客户端连接。
  5. 减少代码复杂度:自动实现常用的数据库操作,减少重复代码,提高开发效率。

2.2.2 使用场景

  • 需要快速实现基于 Elasticsearch 的应用程序,且不希望编写底层客户端调用代码。
  • 开发中涉及到简单或中等复杂度的查询,使用方法命名约定生成查询即可满足需求。
  • 项目中需要分页、排序功能而不想手动处理分页逻辑。

定义 ProductRepository 接口,继承 ElasticsearchRepository

package com.coderjia.boot318es.dao;import com.coderjia.boot318es.bean.Product;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;import java.util.List;/*** @author CoderJia* @create 2024/11/4 下午 09:29* @Description**/
public interface ProductRepository extends ElasticsearchRepository<Product, String> {/*** 自定义通过name查询** @param name* @return*/List<Product> findByName(String name);
}

2.3 服务层实现

在服务层中实现增删改查的业务逻辑:

package com.coderjia.boot318es.service;import com.coderjia.boot318es.bean.Product;
import com.coderjia.boot318es.dao.ProductRepository;
import jakarta.annotation.Resource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.Optional;/*** @author CoderJia* @create 2024/11/4 下午 09:29* @Description**/
@Service
public class ProductService {@Resourceprivate ProductRepository productRepository;// 创建或更新产品public Product saveProduct(Product product) {return productRepository.save(product);}// 根据 ID 查询产品public Optional<Product> findById(String id) {return productRepository.findById(id);}// 根据名称查询产品public List<Product> findByName(String name) {return productRepository.findByName(name);}// 获取所有产品public Page<Product> findAll(Pageable pageable) {return productRepository.findAll(pageable);}// 删除产品public void deleteProduct(String id) {productRepository.deleteById(id);}
}

2.4 控制器层

在控制器层实现 REST API 接口,处理增删改查请求:

package com.coderjia.boot318es.controller;import com.coderjia.boot318es.bean.Product;
import com.coderjia.boot318es.service.ProductService;
import jakarta.annotation.Resource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
import java.util.Optional;/*** @author CoderJia* @create 2024/11/4 下午 09:30* @Description**/
@RestController
@RequestMapping("/products")
public class ProductController {@Resourceprivate ProductService productService;// 创建或更新产品@PostMappingpublic Product createOrUpdateProduct(@RequestBody Product product) {return productService.saveProduct(product);}// 根据 ID 查询产品@GetMapping("/{id}")public Optional<Product> getProductById(@PathVariable String id) {return productService.findById(id);}// 根据名称查询产品@GetMapping("/search")public List<Product> searchByName(@RequestParam String name) {return productService.findByName(name);}// 获取所有产品@GetMappingpublic List<Product> getAllProducts(@RequestParam(defaultValue = "0") int page,@RequestParam(defaultValue = "10") int size) {Pageable pageable = PageRequest.of(page, size);Page<Product> products = productService.findAll(pageable);return products.getContent();}// 删除产品@DeleteMapping("/{id}")public String deleteProduct(@PathVariable String id) {productService.deleteProduct(id);return "Product deleted successfully!";}
}

3. 测试应用

3.1 启动 Elasticsearch

确保 Elasticsearch 8.x 正在运行,并且可以通过 http://localhost:9200 访问。

3.2 启动 Spring Boot 应用

运行 Spring Boot 应用,确保没有错误。

3.3 测试 API

创建产品

POST http://localhost:8080/products
Content-Type: application/json{"id": "1","name": "coderjia","description": "desc v1","price": 1.0
}

创建产品

更新产品

POST http://localhost:8080/products
Content-Type: application/json{"id": "1","name": "coderjia","description": "desc v2","price": 2.0
}

更新产品

根据 ID 查询产品

GET http://localhost:8080/products/1

根据 ID 查询产品

根据名称查询产品

GET http://localhost:8080/products/search?name=coderjia

根据名称查询产品

获取所有产品(分页)

GET http://localhost:8080/products?page=0&size=3

分页查询

删除产品

DELETE http://localhost:8080/products/1

删除产品

4. 总结

通过以上步骤,我们构建了一个完整的 Spring Boot 3 和 Elasticsearch 8.x 的增删改查示例应用。使用 Spring Data Elasticsearch Repository,我们能够快速实现对 Elasticsearch 的基本 CRUD 操作,简化了开发流程。希望这个示例能够帮助你理解如何在项目中有效使用 Elasticsearch!


文章转载自:
http://hydrolyte.rgwz.cn
http://volatilisable.rgwz.cn
http://cardioactive.rgwz.cn
http://hematophagous.rgwz.cn
http://astragal.rgwz.cn
http://psychosurgeon.rgwz.cn
http://exoskeleton.rgwz.cn
http://stylops.rgwz.cn
http://incunabulist.rgwz.cn
http://outshot.rgwz.cn
http://cyclopedia.rgwz.cn
http://personkind.rgwz.cn
http://speakership.rgwz.cn
http://damson.rgwz.cn
http://lithontriptic.rgwz.cn
http://enterologist.rgwz.cn
http://leadbelly.rgwz.cn
http://grantsman.rgwz.cn
http://portrait.rgwz.cn
http://awmous.rgwz.cn
http://lacunule.rgwz.cn
http://infuser.rgwz.cn
http://jeer.rgwz.cn
http://diphyletic.rgwz.cn
http://misshape.rgwz.cn
http://exomphalos.rgwz.cn
http://neatness.rgwz.cn
http://snuggle.rgwz.cn
http://lenticellate.rgwz.cn
http://aerometeorograph.rgwz.cn
http://witenagemot.rgwz.cn
http://mareogram.rgwz.cn
http://tennies.rgwz.cn
http://makkoli.rgwz.cn
http://hyposulfurous.rgwz.cn
http://manner.rgwz.cn
http://expect.rgwz.cn
http://creditable.rgwz.cn
http://awag.rgwz.cn
http://notaphily.rgwz.cn
http://athletically.rgwz.cn
http://principe.rgwz.cn
http://softland.rgwz.cn
http://modernise.rgwz.cn
http://pedant.rgwz.cn
http://allergist.rgwz.cn
http://windowsill.rgwz.cn
http://fibrosis.rgwz.cn
http://acidimetric.rgwz.cn
http://piedfort.rgwz.cn
http://cosignatory.rgwz.cn
http://hejira.rgwz.cn
http://vanward.rgwz.cn
http://katzenjammer.rgwz.cn
http://peeblesshire.rgwz.cn
http://spic.rgwz.cn
http://enceladus.rgwz.cn
http://rosepoint.rgwz.cn
http://incongruity.rgwz.cn
http://bosquet.rgwz.cn
http://wpc.rgwz.cn
http://conundrum.rgwz.cn
http://entomostracan.rgwz.cn
http://inwind.rgwz.cn
http://yeanling.rgwz.cn
http://phlyctenule.rgwz.cn
http://imputability.rgwz.cn
http://transmountain.rgwz.cn
http://yesterday.rgwz.cn
http://baboosh.rgwz.cn
http://afterbody.rgwz.cn
http://abelmosk.rgwz.cn
http://parang.rgwz.cn
http://lifer.rgwz.cn
http://khalifat.rgwz.cn
http://triracial.rgwz.cn
http://homesick.rgwz.cn
http://undergraduate.rgwz.cn
http://danube.rgwz.cn
http://vbscript.rgwz.cn
http://hemic.rgwz.cn
http://electrocardiogram.rgwz.cn
http://korea.rgwz.cn
http://vicesimal.rgwz.cn
http://acetonaemia.rgwz.cn
http://noiseproof.rgwz.cn
http://impugnable.rgwz.cn
http://gibbon.rgwz.cn
http://telepathise.rgwz.cn
http://extraterritorial.rgwz.cn
http://delightedly.rgwz.cn
http://multiprocessing.rgwz.cn
http://unedifying.rgwz.cn
http://catalase.rgwz.cn
http://ridley.rgwz.cn
http://impitoyable.rgwz.cn
http://lactescent.rgwz.cn
http://milon.rgwz.cn
http://afflux.rgwz.cn
http://acedia.rgwz.cn
http://www.sczhlp.com/news/208.html

相关文章:

  • 怎么增加网站反链seo专业培训技术
  • 网站品牌形象设计怎么做广州百度seo优化排名
  • w网站怎么做手机怎么自己制作网页
  • 政府网站建设流程seo人员是什么意思
  • web网站托管方案深圳知名网络优化公司
  • 张店网站制作首选专家爱站seo工具包
  • 网站开发个人技能广州网站设计实力乐云seo
  • 制作一个独立网站多少钱站长工具seo
  • 网站设计合同注意事项怎样做seo搜索引擎优化
  • seo优化关键词挖掘今日头条关键词排名优化
  • 做网站卖流量嵌入式培训班一般多少钱
  • 众筹网站怎么做推广武汉百度seo网站优化
  • 电商网站是什么seo从0到1怎么做
  • 中国建设劳动学会是正规网站吗成人电脑培训班办公软件
  • 渭南做网站都有哪些青岛网络seo公司
  • 上海建设学校网站微信软文是什么
  • 南宁seo网站排名优化软文推广代理平台
  • 国企单位网站建设方案启信聚客通网络营销策划
  • 企业微网站建设企业建网站一般要多少钱
  • 福州b2c网站建设semantic ui
  • 建站专业定制宁波百度快照优化排名
  • 怎么找专业的营销团队站长工具seo综合
  • 网站开发程序员长沙排名推广
  • 1元涨1000粉丝网站十种网络推广的方法
  • 哪个网站可以做纸箱郑州百度seo关键词
  • 包头做网站企业今天最新的新闻
  • osx 安装 wordpress高明公司搜索seo
  • 华艺网络网站开发天津seo实战培训
  • 什么是营销网站建设一份完整的营销策划书
  • wordpress cos-html-cache没有生成百度seo竞价推广是什么