问题描述:
org.springframework.data.elasticsearch.UncategorizedElasticsearchException: Elasticsearch exception [type=invalid_type_name_exception, reason=Document mapping type name can't start with '_', found: [_doc]]; nested exception is ElasticsearchStatusException[Elasticsearch exception [type=invalid_type_name_exception, reason=Document mapping type name can't start with '_', found: [_doc]]]
Suppressed: org.elasticsearch.client.ResponseException: method [PUT], host [http://localhost:9200], URI [/user/_doc/xudongmaster?timeout=1m], status line [HTTP/1.1 400 Bad Request]
{"error":{"root_cause":[{"type":"invalid_type_name_exception","reason":"Document mapping type name can't start with '_', found: [_doc]"}],"type":"invalid_type_name_exception","reason":"Document mapping type name can't start with '_', found: [_doc]"},"status":400}
问题分析:
1、Elasticsearch缓存数据库版本为6.1.0,但是Elasticsearch的依赖版本是7.9.3,由于Elasticsearch7以上版本的java api默认type为_doc,但是Elasticsearch6的type不支持_开头导致报错。
解决办法:
(1)Elasticsearch依赖版本不变,将Elasticsearch缓存数据库升级至7.x版本以上。
(2)Elasticsearch缓存数据库版本不变,将Elasticsearch依赖版本将至6.2.2。
<!-- ElasticSearch6缓存数据库-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>3.1.1.RELEASE</version>
<scope>compile</scope>
</dependency>