互联网公司手机网站,wordpress缩略图利器,网站域名过期不续费,奥远科技网站建设流程新年快乐! 致2025年还在努力学习的你! 你已经很努力了#xff0c;今晚就让自己好好休息一晚吧!
在后端中选用哪种elasticsearch客户端#xff1f;
elasticsearch可以通过9200或者9300端口进行操作
1#xff09;9300#xff1a;TCP spring-data-elasticsearch:transport-…新年快乐! 致2025年还在努力学习的你! 你已经很努力了今晚就让自己好好休息一晚吧!
在后端中选用哪种elasticsearch客户端
elasticsearch可以通过9200或者9300端口进行操作
19300TCP spring-data-elasticsearch:transport-api.jar springboot版本不同transport-api.jar不同不能适配es版本 7.x已经不建议使用8以后就要废弃
29200HTTP JestClient非官方更新慢 RestTemplate模拟发HTTP请求ES很多操作需要自己封装麻烦 HttpClient同上 high-level-client官方推荐
综上使用官方推荐的high-level-client。
以下为在idea中配置high-level-client的详细操作步骤
①在gulimall模块下创建子模块gulimall-search 在gulimall父模块的pom下添加gulimall-search作为子模块 ②导入相关依赖
dependency
groupIdorg.elasticsearch.client/groupId
artifactIdelasticsearch-rest-high-level-client/artifactId
version7.13.0/version
/dependency刷新依赖可以发现其中的elasticsearch依赖和elasticsearch-rest-client依赖的版本是7.15.2 elasticsearch和elasticsearch-rest-client这两个依赖是elasticsearch-rest-high-level-client的传递依赖就是说elasticsearch-rest-high-level-client依赖着elasticsearch和elasticsearch-rest-client这两个依赖。
我们点开elasticsearch-rest-high-level-client-7.13.0.pom可以看到elasticsearch和elasticsearch-rest-client这两个依赖的版本是7.13.0 那么为什么项目实际引入的版本实际是7.15.2
原因在于该项目pom文件下的的内容 查看spring-boot-dependencies-2.6.13.pom下的内容 可以看到spring-boot-dependencies-2.6.13.pom中也指定了elasticsearch的版本并且版本号为7.15.2是不是和前面实际引入的版本号对应上了~
至于为什么dependencyManager会影响到elasticsearch-rest-high-level-client的传递依赖版本具体可以参考博客maven的dependencyManagement中定义的依赖声明优先级高于传递依赖
总之结论就是maven的dependencyManagement中定义的依赖声明优先级高于传递依赖。
所以我们把elasticsearch-rest-high-level-client里面的两个依赖elasticsearch和elasticsearch-rest-client排除然后显示导入这两个依赖如下 dependencygroupIdorg.elasticsearch.client/groupIdartifactIdelasticsearch-rest-high-level-client/artifactIdversion7.13.0/versionexclusionsexclusionartifactIdelasticsearch/artifactIdgroupIdorg.elasticsearch/groupId/exclusionexclusionartifactIdelasticsearch-rest-client/artifactIdgroupIdorg.elasticsearch.client/groupId/exclusion/exclusions/dependencydependencygroupIdorg.elasticsearch/groupIdartifactIdelasticsearch/artifactIdversion7.13.0/version/dependencydependencyartifactIdelasticsearch-rest-client/artifactIdgroupIdorg.elasticsearch.client/groupIdversion7.13.0/version/dependency③编写配置类 配置类编写如下
Configuration
public class GulimallElasticSearchConfig {Beanpublic RestHighLevelClient client() {RestHighLevelClient client new RestHighLevelClient(RestClient.builder(new HttpHost(192.168.206.134, 9200, http)));return client;}
}④单元测试 SpringBootTest
class GulimallSearchApplicationTests {Autowiredprivate RestHighLevelClient client;Testvoid contextLoads() {System.out.println(client);}
}输出结果如下 说明配置成功
ps这里没有引入common模块因为我在引入入common模块后出现了could not find class [org.springframework.cloud.client.loadbalancer.reactive.onnoribbondefaultcondition]报错所以我暂时忽略common依赖的引入。如果需要引入common依赖在运行测试类的时候会出现无法找到数据源的错误需要在如下启动类上添加exclude DataSourceAutoConfiguration.class.由于配置了mybatis等与数据库相关的类spring boot在启动时会自动加载数据源具体可以参考我写的博客报错Failed to determine a suitable driver class 让spring boot项目启动时不连接数据库