由於我用的是springboot2.3.0版本,es用的是7.4.2,但是boot中研究定義了es的版本是7.6.2,
在這里修改版本沒有生效,導致項目引入了2個版本,下面是我用的api,(暫時還不知道為什么)
<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> <version>7.4.2</version> </dependency>
注:后面重啟發現就可以了。。。。
然后就會發生以下錯誤
java.lang.IncompatibleClassChangeError: Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected at org.elasticsearch.client.RequestConverters.createEntity(RequestConverters.java:689) at org.elasticsearch.client.RequestConverters.createEntity(RequestConverters.java:684) at org.elasticsearch.client.IndicesRequestConverters.createIndex(IndicesRequestConverters.java:128) at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1760) at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1734) at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1696) at org.elasticsearch.client.IndicesClient.create(IndicesClient.java:191) at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.createIndex(ElasticsearchRestTemplate.java:1248) at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.createIndex(ElasticsearchRestTemplate.java:1256)
查找原因,應該是2個版本原因導致的,於是就統一一下,我改不了7.4.2,那我就選擇加入7.6.2,哈哈哈。
存在一個版本,然后再進行測試。
@Autowired(required = false) private RestHighLevelClient client; @Test void indexData() throws IOException { IndexRequest request = new IndexRequest("users"); request.id("1"); User u = new User(); u.setAge(11); u.setGender("男"); u.setUserName("wgr"); String s = JSON.toJSONString(u); request.source(s, XContentType.JSON); IndexResponse indexResponse = client.index(request, GulimallElasticSearchConfig.COMMON_OPTIONS); System.out.println(indexResponse); }