Spring Boot 中的 Elasticsearch 的数据操作配置

news/2024/11/23 14:36:12/

Spring Boot 中的 Elasticsearch 的数据操作配置

Elasticsearch是一个基于Lucene的搜索引擎,可以快速地存储、搜索和分析大量的数据。Spring Boot是一个开发框架,提供了快速构建基于Spring的应用程序的工具和技术。在本文中,我们将讨论如何在Spring Boot应用程序中配置Elasticsearch数据操作。

在这里插入图片描述

Elasticsearch简介

Elasticsearch是一个开源的全文搜索和分析引擎,可以快速地存储、搜索和分析大量的数据。它基于Lucene引擎,提供了一个分布式、多租户、实时搜索和分析的能力。Elasticsearch使用JSON格式的文档来存储数据,可以通过RESTful API进行访问。

Spring Boot中的Elasticsearch数据操作

Spring Boot提供了对Elasticsearch的支持,可以通过Spring Data Elasticsearch来进行数据操作。Spring Data Elasticsearch是一个基于Spring Data的模块,提供了对Elasticsearch的集成支持。它可以通过注解或者XML文件来配置Elasticsearch的数据访问。

配置Elasticsearch客户端

在Spring Boot应用程序中使用Elasticsearch,首先需要配置Elasticsearch客户端。可以使用Elasticsearch官方提供的Java客户端或者Spring Data Elasticsearch提供的客户端。这里我们选择使用Spring Data Elasticsearch提供的客户端。

@Configuration
@EnableElasticsearchRepositories(basePackages = "com.example.repository")
public class ElasticsearchConfig {@Value("${elasticsearch.host}")private String host;@Value("${elasticsearch.port}")private int port;@Value("${elasticsearch.clustername}")private String clusterName;@Beanpublic Client client() throws Exception {Settings settings = Settings.builder().put("cluster.name", clusterName).build();TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));return client;}@Beanpublic ElasticsearchOperations elasticsearchTemplate() throws Exception {return new ElasticsearchTemplate(client());}
}

在上面的代码中,我们定义了一个ElasticsearchConfig类,使用@EnableElasticsearchRepositories注解开启Elasticsearch的Repository支持。在该类中,我们通过@Value注解读取配置文件中的Elasticsearch主机、端口和集群名称。然后通过TransportClient创建Elasticsearch客户端,并将其注入到Spring容器中。

创建Elasticsearch Repository

在Spring Boot应用程序中使用Elasticsearch,需要定义一个Elasticsearch Repository。Elasticsearch Repository是一个接口,继承自ElasticsearchCrudRepository。ElasticsearchCrudRepository是Spring Data Elasticsearch提供的CrudRepository的子接口,封装了Elasticsearch的基本数据操作接口。ElasticsearchCrudRepository定义了一些基本的CRUD操作,如save、delete、findById等。

@Repository
public interface BookRepository extends ElasticsearchCrudRepository<Book, String> {List<Book> findByName(String name);List<Book> findByAuthor(String author);List<Book> findByCategory(String category);
}

在上面的代码中,我们定义了一个BookRepository接口,继承自ElasticsearchCrudRepository。在该接口中,我们定义了一些查询方法,如findByName、findByAuthor和findByCategory等。

创建Elasticsearch实体类

在Spring Boot应用程序中使用Elasticsearch,需要定义一个Elasticsearch实体类。Elasticsearch实体类是一个POJO类,映射到Elasticsearch中的一个文档。

@Document(indexName = "book", type = "book", shards = 1, replicas = 0, refreshInterval = "-1")
public class Book {@Idprivate String id;private String name;private String author;private String category;private LocalDateTime publishTime;// getter and setter// toString}

在上面的代码中,我们定义了一个Book类,使用@Document注解指定了索引名称为book,类型为book,分片数为1,副本数为0,刷新间隔为-1。在该类中,我们定义了一些属性,如id、name、author、category和publishTime等。使用@Id注解指定了id属性为文档的id。

数据操作示例

在Spring Boot应用程序中使用Elasticsearch,可以通过Elasticsearch Repository进行数据操作。下面是一个数据操作的示例代码。

@Service
public class BookService {@Autowiredprivate BookRepository bookRepository;public void save(Book book) {bookRepository.save(book);}public void delete(String id) {bookRepository.deleteById(id);}public Book findById(String id) {Optional<Book> optional = bookRepository.findById(id);return optional.orElse(null);}public List<Book> findByName(String name) {return bookRepository.findByName(name);}public List<Book> findByAuthor(String author) {return bookRepository.findByAuthor(author);}public List<Book> findByCategory(String category) {return bookRepository.findByCategory(category);}
}

在上面的代码中,我们定义了一个BookService类,使用@Autowired注解注入了BookRepository。在该类中,我们定义了一些数据操作方法,如save、delete、findById、findByName、findByAuthor和findByCategory等。这些方法直接调用Elasticsearch Repository中封装的基本数据操作方法。

总结

在本文中,我们介绍了如何在Spring Boot应用程序中配置Elasticsearch数据操作。首先我们需要配置Elasticsearch客户端,然后定义一个Elasticsearch Repository和Elasticsearch实体类。最后我们可以通过Elasticsearch Repository进行数据操作。使用Spring Boot和Elasticsearch可以快速地构建一个高效的搜索引擎应用程序。


http://www.ppmy.cn/news/715121.html

相关文章

番外12:获取晶体管漏极电流源平面的仿真波形

番外12&#xff1a;获取晶体管漏极电流源平面的仿真波形 老是有同学反应&#xff0c;仿真中无法获取漏极电流源平面的仿真波形&#xff0c;在此给出解释与解决办法。 1、ADS能够访问到部分器件的电流源平面波形 对于某些器件&#xff0c;比如说CGH40010F&#xff0c;可以在仿…

闲云拾财:想做副业,你必须知道的几个正规副业,值得收藏

受疫情影响&#xff0c;很多人现在都很重视副业的发展&#xff0c;都希望通过副业收入来改善自己的生活&#xff0c;但很多人却不知道该做什么&#xff0c;今天给大家分享几类副业&#xff0c;大家可根据个人实际和兴趣爱好进行选择&#xff0c;做完后你一定会发现惊喜。 一、卖…

适合大学生的六个兼职项目,挣钱的同时还能提升自己

父母给的生活费不够用&#xff0c;校园生活比较拮据&#xff0c;想赚钱没有时间&#xff0c;想在网上兼职找不到合适的&#xff0c;这是不是你的现状 首先&#xff0c;兼职能够帮助学生提高经济实力。大学生兼职可以赚取一定的收入&#xff0c;这对于负担不起大学生生活的学生…

写作副业好做吗?写作作为副业可以赚钱吗?

写作副业好做吗&#xff1f;写作作为副业可以赚钱吗&#xff1f; 每天下班&#xff0c;不是想着吃啥好吃的&#xff0c;就是想着去哪玩&#xff0c;时间久了&#xff0c;习以为常&#xff0c;认为生活就只能这样了。但是&#xff0c;我们再下班后&#xff0c;很大一部分时间都…

10种靠谱又收益不错的在家就可以做的网赚兼职平台介绍

精品文章正在更新中.本文属性普通 俗话说&#xff0c;男怕入错行&#xff0c;女怕嫁错郎。在现在主业养不饱一家人的时候&#xff0c;选一个对的副业显得尤其重要。那么有什么好的副业平台可以做呢&#xff1f; 1做任务赚钱 平台上会有人发布任务&#xff0c;你在平台上做任务…

3类兼职渠道,赚钱的方法来了

第一大类&#xff0c;不用说&#xff0c;绝对是现在新兴的新媒体行业了。 倘若自己时间比较宽裕的话&#xff0c;可以给其他的人作微头条的写手或者运营他人的账号&#xff0c;这类的工作需要有一定的相关经验。 毕竟成年的世界都是只讲究结果&#xff0c;不注重这些功劳苦劳之…

网络兼职赚钱项目,这5个目前很多人做!

一份工作养家糊口的日子已经远去&#xff0c;如今的社会需要人们更多的收入来源。朝九晚五的上班时间拖累着世人的脚步&#xff0c;但拖累不了扩展收入的心。在这个网络时代&#xff0c;互联网兼职已成为了新的创收手段。那么&#xff0c;在网上如何兼职赚钱呢&#xff1f; 1、…

适合女生上班族的兼职有哪些?女生如何赚外快?

从身体力量来看&#xff0c;女生是弱势群体&#xff0c;但是&#xff0c;现在并不是依靠力量生存的年代&#xff0c;女生一样可以依靠自己的能力活出精彩。事实上&#xff0c;很多女生不仅自己上班白天有工作&#xff0c;而且还在下班后做兼职&#xff0c;下面&#xff0c;我们…