springboot + elasticsearch

tips: 上一篇文章我们整合了springboot 与kafka,细心的童鞋可能已经发现了我们使用的springboot版本为最新的2.0.0,同样spring-kafka也为最新的版本2.1.4,我们确实都已经成功的整合了,并没有遇到什么问题,但是今天我整合elasticsearch时却出现了问题,经过一段时间的排查,发现是依赖版本所致,我在引入elasticsearch依赖(spring-boot-starter-data-elasticsearch)时,默认会与springboot版本同步即2.0.0,然后启动的时候就会抛出异常:

Caused by: java.lang.ClassNotFoundException: org.springframework.data.mapping.context.AbstractMappingContext
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

... 41 common frames omitted


此时我把springboot版本降低为1.5.10,然后重新启动,以上异常不见了,但是抛出了另外一个异常:

java.lang.NoSuchMethodError: org.springframework.util.Assert.state(ZLjava/util/function/Supplier;)V
at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.determineInferredType(MessagingMessageListenerAdapter.java:463)
at org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.<init>(MessagingMessageListenerAdapter.java:106)
at org.springframework.kafka.listener.adapter.RecordMessagingMessageListenerAdapter.<init>(RecordMessagingMessageListenerAdapter.java:61)
at org.springframework.kafka.config.MethodKafkaListenerEndpoint.createMessageListenerInstance(MethodKafkaListenerEndpoint.java:172)
at org.springframework.kafka.config.MethodKafkaListenerEndpoint.createMessageListener(MethodKafkaListenerEndpoint.java:132)
at org.springframework.kafka.config.AbstractKafkaListenerEndpoint.setupMessageListener(AbstractKafkaListenerEndpoint.java:374)
at org.springframework.kafka.config.AbstractKafkaListenerEndpoint.setupListenerContainer(AbstractKafkaListenerEndpoint.java:359)
at org.springframework.kafka.config.AbstractKafkaListenerContainerFactory.createListenerContainer(AbstractKafkaListenerContainerFactory.java:246)

at org.springframework.kafka.config.AbstractKafkaListenerContainerFactory.createListenerContainer

仔细一看应该是和kafka相关的异常,于是我继续尝试着将kafka的版本降低至1.1.7(因为我之前用的就是这个版本),然后启动项目,果然顺利启动了(此时我的心情无以言表呀@_@);说了这么多就是记录一下可能产生问题的原因,希望能给其它童鞋一些警示,另外springboot版本更新速度之快堪称火箭啊,所以大家在引用的时候切忌追求最新,否则会遇到各种问题;

好吧,说了这么多,接下来进入正题了:

注:以下所有的springboot版本我都更改为1.5.10了。

1.打开pom.xml并加入以下内容:

<!--elasticsearch-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <version>1.5.10.RELEASE</version>
</dependency>

引入elasticsearch依赖

2.打开application-dev.properties加入以下内容(集群模式以“,”隔开):

##es
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=10.0.2.23:9300

3.编写单元测试类:


如果查询到了数据说明你成功了哦!

注:

1.这里我并没有教大家建立索引和类型(orderinfo),大家可以自行查阅资料,挺简单的,搭建一个ES服务也挺简单的哦,ES集群是自动发现机制,只要在同一个网段,且集群名称相同多个ES服务会自动组建成一个集群(如果大家有啥不懂的可以私信哦,相互交流)

2.这里我并没有采用spring封装的elasticsearchTemplate查询,大家可以自行测试spring所封装的功能,因为我习惯了用原生api

猜你喜欢

转载自blog.csdn.net/zwx19921215/article/details/79799515