客户端版本: spring boot 2.6.3,spring data search 4.3.1
服务器版本: es 6.5.1, 集群
@Document(indexName = "students")
public class MajorInfo {
private @Id String id;
@Field(type = FieldType.Keyword)
private String country;
@Configuration
public class RestClientConfig extends AbstractElasticsearchConfiguration {
@Override
@Bean
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
.connectedTo("192.168.33.91:9200")
.build();
return RestClients.create(clientConfiguration).rest();
}
}
public interface MajorInfoRepository extends ElasticsearchRepository<MajorInfo, String>{
}
Iterable<MajorInfo> result = majorInfoRepository.findAll(); --》 访问
Caused by: org.springframework.data.elasticsearch.RestStatusException: method [HEAD], host [http://192.168.3.11:9200], URI [/student?ignore_throttled=false&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=false], status line [HTTP/1.1 400 Bad Request]; nested exception is ElasticsearchStatusException[method [HEAD], host [http://192.168.3.11:9200], URI [/student?ignore_throttled=false&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=false], status line [HTTP/1.1 400 Bad Request]]; nested: ResponseException[method [HEAD], host [http://192.168.3.11:9200], URI [/student?ignore_throttled=false&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=false], status line [HTTP/1.1 400 Bad Request]];
at org.springframework.data.elasticsearch.core.ElasticsearchExceptionTranslator.translateExceptionIfPossible(ElasticsearchExceptionTranslator.java:69) ~[spring-data-elasticsearch-4.3.1.jar:4.3.1]
at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.translateException(ElasticsearchRestTemplate.java:427) ~[spring-data-elasticsearch-4.3.1.jar:4.3.1]
at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.execute(ElasticsearchRestTemplate.java:410) ~[spring-data-elasticsearch-4.3.1.jar:4.3.1]
at org.springframework.data.elasticsearch.core.RestIndexTemplate.doExists(RestIndexTemplate.java:103) ~[spring-data-elasticsearch-4.3.1.jar:4.3.1]
at org.springframework.data.elasticsearch.core.AbstractIndexTemplate.exists(AbstractIndexTemplate.java:134) ~[spring-data-elasticsearch-4.3.1.jar:4.3.1]
at org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository.<init>(SimpleElasticsearchRepository.java:92) ~[spring-data-elasticsearch-4.3.1.jar:4.3.1]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:78) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[na:na]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211) ~[spring-beans-5.3.15.jar:5.3.15]
... 42 common frames omitted
Caused by: org.elasticsearch.ElasticsearchStatusException: method [HEAD], host [http://192.168.3.11:9200], URI [/student?ignore_throttled=false&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=false], status line [HTTP/1.1 400 Bad Request]
at org.elasticsearch.client.RestHighLevelClient.parseResponseException(RestHighLevelClient.java:1985) ~[elasticsearch-rest-high-level-client-7.15.2.jar:7.15.2]
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1745) ~[elasticsearch-rest-high-level-client-7.15.2.jar:7.15.2]
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1717) ~[elasticsearch-rest-high-level-client-7.15.2.jar:7.15.2]
at org.elasticsearch.client.IndicesClient.exists(IndicesClient.java:963) ~[elasticsearch-rest-high-level-client-7.15.2.jar:7.15.2]
at org.springframework.data.elasticsearch.core.RestIndexTemplate.lambda$doExists$2(RestIndexTemplate.java:103) ~[spring-data-elasticsearch-4.3.1.jar:4.3.1]
at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.execute(ElasticsearchRestTemplate.java:408) ~[spring-data-elasticsearch-4.3.1.jar:4.3.1]
... 51 common frames omitted
Caused by: org.elasticsearch.client.ResponseException: method [HEAD], host [http://192.168.3.11:9200], URI [/student?ignore_throttled=false&ignore_unavailable=false&expand_wildcards=open%2Cclosed&allow_no_indices=false], status line [HTTP/1.1 400 Bad Request]
at org.elasticsearch.client.RestClient.convertResponse(RestClient.java:326) ~[elasticsearch-rest-client-7.15.2.jar:7.15.2]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:296) ~[elasticsearch-rest-client-7.15.2.jar:7.15.2]
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:270) ~[elasticsearch-rest-client-7.15.2.jar:7.15.2]
at org.elasticsearch.client.RestHighLevelClient.performClientRequest(RestHighLevelClient.java:2082) ~[elasticsearch-rest-high-level-client-7.15.2.jar:7.15.2]
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1732) ~[elasticsearch-rest-high-level-client-7.15.2.jar:7.15.2]
... 55 common frames omitted
1:官方 spring data search 4.3.1 是支持 elasticsearch 6.5.1. https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.requirements
2:pom.xml 主动降低 elasticsearch版本, <elasticsearch.version>6.5.1</elasticsearch.version>。
出现下面错误:
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.action.ActionType
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[na:na]
... 56 common frames omitted
3:不想降低spring-boot的版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
4; 没有找到 修改 http method的地方。 如果 http method修改为get,post 应该可以通过。 命令行curl下,get /post 是 通过的。
正常访问,取出数据。
错误实际是在 初始化bean 触发的。
当下我已经找到 不依赖spring-boot data-elasticsearch的方法,就是 直接发送 json 消息跟 es 交互。
数据格式不对
看报错应该是bean初始化的问题
试试更换版本或者重新编译项目试试
前端是用什么技术发送请求的,参数格式错误,应该要把参数封装为对象。
你是不是在spring-boot配置文件中配置了权限过滤
出现400提示,肯定是请求方式错了!
400,看报错应该是bean初始化的问题
400是地址或参数什么的不对吧