ELASTICSEARCH的java客户端和springboot整合(二)

迈不过友情╰ 2022-01-21 09:33 388阅读 0赞

SpringBoot整合TransportClient

目录

  1. SpringBoot整合TransportClient

一.1redis的整合

1.启动一个redis的结点(单节点)

2.配置单节点的内容

3.配置类中读取属性生成返回的JedisShardedPool

一.2rabbitmq的整合

1.直接利用springboot自动整合

2.生产端注入RabbitTemplate

3.消费端异步监听的声明式注解@RabbitListener

一.3es的整合

3.配置类读取属性

4.配置类初始化TransportClient对象

6.创建一个main类

7.创建ESController类

1.先添加一些数据

2.运行代码测试

1.redis的整合


一.1redis的整合

1.启动一个redis的结点(单节点)

2.配置单节点的内容

  • redis.nodes
  • redis.maxTotal
  • redis.minIdle
  • redis.maxIdle

3.配置类中读取属性生成返回的JedisShardedPool

一.2rabbitmq的整合

1.直接利用springboot自动整合

2.生产端注入RabbitTemplate

3.消费端异步监听的声明式注解@RabbitListener

一.3es的整合

  • springboot版本1.5.2.RELEASE—>2.X的es版本
  • es的版本历史:随着es的发展形成了一个庞大的家族
  • springboot版本2.1.X.RELEASE—>5.x以上的es

手动整合:TransportClient交给框架维护,注入使用

1.Pom.xml依赖

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>cn.tedu</groupId>
  5. <artifactId>springboot-elasticsearch</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>jar</packaging>
  8. <name>springboot-elasticsearch</name>
  9. <url>http://maven.apache.org</url>
  10. <parent>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-parent</artifactId>
  13. <version>1.5.2.RELEASE</version>
  14. </parent>
  15. <properties>
  16. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  17. </properties>
  18. <dependencies>
  19. <dependency>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-web</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>junit</groupId>
  25. <artifactId>junit</artifactId>
  26. <version>3.8.1</version>
  27. <scope>test</scope>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.elasticsearch</groupId>
  31. <artifactId>elasticsearch</artifactId>
  32. <version>5.5.2</version>
  33. </dependency>
  34. <!-- es的java客户端 TransportClient -->
  35. <dependency>
  36. <groupId>org.elasticsearch.client</groupId>
  37. <artifactId>transport</artifactId>
  38. <version>5.5.2</version>
  39. </dependency>
  40. <!-- Java对象转换json字符串 -->
  41. <dependency>
  42. <groupId>com.fasterxml.jackson.core</groupId>
  43. <artifactId>jackson-databind</artifactId>
  44. <version>2.8.7</version>
  45. </dependency>
  46. </dependencies>
  47. </project>

2.准备配置prop**erties**

20190609161452527.png

需要多个可以追加

3.配置读取属性

@ConfigurationProperties(prefix=”es”)

private List nodes;

20190609161717807.png

4.配置类初始化TransportClient对象

  1. //初始化连接对象
  2. @Bean
  3. public TransportClient initEsClient() throws Exception{
  4. //新建一个client对象,setting对象(配置集群名称)
  5. TransportClient client=
  6. new PreBuiltTransportClient(Settings.EMPTY);
  7. //添加负载均衡器的结点信息,如果是集群,可以多次添加多个节点信息
  8. for (String node : nodes) {//10.9.9.9:9300
  9. String host=node.split(":")[0];
  10. int port=Integer.parseInt(node.split(":")[1]);
  11. client.addTransportAddress(new InetSocketTransportAddress(
  12. InetAddress.getByName(host), port));
  13. }
  14. return client;
  15. }
  16. public List<String> getNodes() {
  17. return nodes;
  18. }
  19. public void setNodes(List<String> nodes) {
  20. this.nodes = nodes;
  21. }

6.**创建一个main类**

  1. package com.jt;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @SpringBootApplication
  5. public class StarterES {
  6. public static void main(String[] args) {
  7. SpringApplication.run(StarterES.class, args);
  8. }
  9. }

7.创建ESController类

  1. @RestController
  2. public class ESController {
  3. @Autowired
  4. private TransportClient client;
  5. @RequestMapping("search")
  6. public String searchArticle
  7. (String name,String text,Integer page,Integer rows){
  8. MatchQueryBuilder query1=QueryBuilders.matchQuery(name, text);//进行默认的分词器解析
  9. //java 编,程,思,想
  10. //搜索api获取搜索结果
  11. SearchResponse response1 = client.prepareSearch("index06")
  12. .setFrom((page-1)*rows).setSize(rows).setQuery(query1).get();
  13. long total = response1.getHits().totalHits;
  14. System.out.println(total);
  15. SearchHit[] hits = response1.getHits().getHits();
  16. String reMsg="";
  17. for (SearchHit hit : hits) {
  18. reMsg=reMsg+hit.getSourceAsString();
  19. }
  20. return reMsg;
  21. }
  22. }

1.先添加一些数据

  1. curl -XPUT -d '{"id":1,"title":"es简介1","content":"es好用好用真好用1"}' http://10.42.60.249:9200/index06/article/1
  2. curl -XPUT -d '{"id":2,"title":"es简介2","content":"es好用好用真好用2"}' http://10.42.60.249:9200/index06/article/2
  3. curl -XPUT -d '{"id":3,"title":"es简介3","content":"es好用好用真好用3"}' http://10.42.60.249:9200/index06/article/3
  4. curl -XPUT -d '{"id":4,"title":"es简介4","content":"es好用好用真好用4"}' http://10.42.60.249:9200/index06/article/4
  5. curl -XPUT -d '{"id":5,"title":"es简介5","content":"es好用好用真好用5"}' http://10.42.60.249:9200/index06/article/5
  6. curl -XPUT -d '{"id":6,"title":"es简介6","content":"es好用好用真好用6"}' http://10.42.60.249:9200/index06/article/6
  7. curl -XPUT -d '{"id":7,"title":"es简介7","content":"es好用好用真好用7"}' http://10.42.60.249:9200/index06/article/7
  8. curl -XPUT -d '{"id":8,"title":"es简介8","content":"es好用好用真好用8"}' http://10.42.60.249:9200/index06/article/8
  9. curl -XPUT -d '{"id":9,"title":"es简介9","content":"es好用好用真好用9"}' http://10.42.60.249:9200/index06/article/9
  10. curl -XPUT -d '{"id":10,"title":"es简介10","content":"es好用好用真好用10"}' http://10.42.60.249:9200/index06/article/10
  11. curl -XPUT -d '{"id":11,"title":"es简介11","content":"es好用好用真好用11"}' http://10.42.60.249:9200/index06/article/11

2.运行代码测试

20190609164041258.png

实现通过代码获取ES中的数据

20190609164218252.png

#

发表评论

表情:
评论列表 (有 0 条评论,388人围观)

还没有评论,来说两句吧...

相关阅读