当前位置:   article > 正文

Spring Boot配置Elasticsearch6(缓存数据库)添加、查询、更新、删除数据操作_elasticsearchrepository更新数据

elasticsearchrepository更新数据

1 Elasticsearch

        Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
        我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题。

2 启动Elasticsearch

安装和启动Elasticsearch请查看以下博客。

Windows Elasticsearch使用教程(下载、允许Elasticsearch跨域访问、启动)

3 Maven依赖

  1. <!-- ElasticSearch6缓存数据库-->
  2. <dependency>
  3. <groupId>org.springframework.data</groupId>
  4. <artifactId>spring-data-elasticsearch</artifactId>
  5. <version>3.1.1.RELEASE</version>
  6. <scope>compile</scope>
  7. </dependency>

4 Spring Boot配置

  1. #elasticsearch缓存数据库ip地址
  2. elasticsearch.ip=127.0.0.1
  3. #elasticsearch缓存数据库端口
  4. elasticsearch.port=9300
  5. #elasticsearch缓存数据库连接池大小
  6. elasticsearch.pool=5
  7. #elasticsearch缓存数据库集群名称
  8. elasticsearch.cluster.name=elasticsearch

5 ElasticsearchConfig

Elasticsearch配置类。

  1. package com.config;
  2. import org.elasticsearch.client.transport.TransportClient;
  3. import org.elasticsearch.common.settings.Settings;
  4. import org.elasticsearch.common.transport.TransportAddress;
  5. import org.elasticsearch.transport.client.PreBuiltTransportClient;
  6. import org.springframework.beans.factory.annotation.Value;
  7. import org.springframework.context.annotation.*;
  8. import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
  9. import java.net.InetAddress;
  10. /**
  11. * Elasticsearch配置类
  12. */
  13. @Configuration
  14. public class ElasticsearchConfig {
  15. /**
  16. * ip地址
  17. */
  18. @Value("${elasticsearch.ip}")
  19. private String hostName;
  20. /**
  21. * 端口
  22. */
  23. @Value("${elasticsearch.port}")
  24. private String port;
  25. /**
  26. * 集群名称
  27. */
  28. @Value("${elasticsearch.cluster.name}")
  29. private String clusterName;
  30. /**
  31. * 连接池大小
  32. */
  33. @Value("${elasticsearch.pool}")
  34. private String poolSize;
  35. /**
  36. * 客户端资源池
  37. *
  38. * @return
  39. */
  40. @Bean(name = "transportClient")
  41. public TransportClient transportClient() {
  42. TransportClient transportClient = null;
  43. try {
  44. // 配置信息
  45. Settings esSetting = Settings.builder()
  46. //集群名字
  47. .put("cluster.name", clusterName)
  48. //增加嗅探机制,找到ES集群
  49. .put("client.transport.sniff", true)
  50. //增加线程池个数,暂时设为5
  51. .put("thread_pool.search.size", Integer.parseInt(poolSize))
  52. .build();
  53. //配置信息Settings自定义
  54. transportClient = new PreBuiltTransportClient(esSetting);
  55. TransportAddress transportAddress = new TransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port));
  56. transportClient.addTransportAddresses(transportAddress);
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. }
  60. return transportClient;
  61. }
  62. /**
  63. * spring对java api的封装
  64. *
  65. * @param client 客户端资源池
  66. * @return
  67. */
  68. @Bean
  69. ElasticsearchTemplate elasticsearchTemplate(TransportClient client) {
  70. ElasticsearchTemplate elasticsearchTemplate = new ElasticsearchTemplate(client);
  71. return elasticsearchTemplate;
  72. }
  73. }

6 UserDto

Elasticsearch实体类(用户)。

  1. package com.dto;
  2. import lombok.Data;
  3. import org.springframework.data.annotation.Id;
  4. import org.springframework.data.elasticsearch.annotations.*;
  5. /**
  6. * Elasticsearch实体类(用户)
  7. */
  8. @Document(indexName = "user",type = "userdto")
  9. @Data
  10. public class UserDto {
  11. @Id
  12. private String username;
  13. @Field(type = FieldType.Text)
  14. private String password;
  15. }

7 新建索引

创建一个名称为user的索引。具体创建步骤请参数以下博客。

 ElasticSearch-Head操作Elasticsearch进行增加、更新、查询、删除数据

8 UserRepository

Elasticsearch持久层类(用户)。

  1. package com.dao;
  2. import com.dto.UserDto;
  3. import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
  4. import org.springframework.stereotype.*;
  5. /**
  6. * Elasticsearch持久层类(用户)
  7. */
  8. @Repository
  9. public interface UserRepository extends ElasticsearchRepository<UserDto,String> {
  10. /**
  11. * 查询用户信息
  12. * @param username
  13. * @return
  14. */
  15. UserDto getUserDtoByUsername(String username);
  16. }

9 ElasticsearchController

调试代码。

  1. package com.controller;
  2. import com.dao.UserRepository;
  3. import com.dto.UserDto;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.*;
  6. @RestController
  7. @RequestMapping("/elasticsearch")
  8. public class ElasticsearchController {
  9. @Autowired
  10. private UserRepository userRepository;
  11. /**
  12. * 插入
  13. *
  14. * @return
  15. */
  16. @PostMapping("/insert")
  17. public UserDto insert(UserDto userDto) {
  18. return userRepository.save(userDto);
  19. }
  20. /**
  21. * 根据用户名获取用户信息
  22. *
  23. * @return
  24. */
  25. @GetMapping("/query")
  26. public UserDto query(String username) {
  27. return userRepository.getUserDtoByUsername(username);
  28. }
  29. /**
  30. * 更新
  31. *
  32. * @return
  33. */
  34. @PostMapping("/update")
  35. public UserDto update(UserDto userDto) {
  36. return userRepository.save(userDto);
  37. }
  38. /**
  39. * 删除
  40. *
  41. * @return
  42. */
  43. @DeleteMapping("/delete")
  44. public void delete(UserDto userDto){
  45. userRepository.delete(userDto);
  46. }
  47. }

10 调试结果

10.1 新增数据

​​​​​​​

 10.2 查询数据

 10.3 更新数据

 10.4 删除数据

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/68838?site
推荐阅读
相关标签
  

闽ICP备14008679号