es的一个相关性查询,没有按照预想的结果返回。
同事们讨论的结果是springboot 和es 版本的兼容性问题导致没有返回score分数
作为酱油王子,我负责改这个问题,仿照原接口写了一个接口。添加依赖包。
.....时间过了大半天,启动系统报错,包版本冲突...
查问题,设置版本
<properties>
<elasticsearch.version>7.7.0</elasticsearch.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
</dependencies>
改链接方式
1、application.yml简单配置文件
spring: elasticsearch: rest: username: elastic password: elastic uris: http://localhost:9200
2、代码复杂配置
import org.apache.http.HttpHost;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ElasticSearchConfig {
/**
* 使用 java api 操作 elasticsearch
* 1. 导入同版本的依赖 elasticsearch-rest-high-level-client
* 2. 编写配置类 @Bean 注入到容器 获取 client 对象
* 3. 测试
*/
@Value("${es.hostName:172.15.34.32}")
private String hostName;
@Value("${es.port:9200}")
private int port;
@Value("${es.scheme:http}")
private String scheme;
//这里没有使用 @Bean注解 放到容器中 静态方法 直接通过类名调用 单例模式
// 访问es 有安全鉴别 这个方法给请求设置 RequestOptions 官方文档中有
public static final RequestOptions COMMON_OPTIONS;
static {
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
COMMON_OPTIONS = builder.build();
}
@Bean
public RestHighLevelClient getEsClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(hostName, port, scheme)));
return client;
}
}
1、发现自己可能做了无用功,重新跑原来代码,发现还是问题存在
2、查异常,默认查询sort为score,如果设定sort,则score为空。