【搜寻系列】ES根本我的项目搭建
之前始终没有写ES相干的博文,当初开始补课,预计5-6篇博文将es的应用姿态展现给各位小伙伴;本文将作为es联合springboot的第一篇博文,根本我的项目环境搭建
<!-- more -->
I. 我的项目搭建
1. 我的项目依赖
本我的项目借助SpringBoot 2.2.1.RELEASE
+ maven 3.5.3
+ IDEA
进行开发
开一个web服务用于测试
<dependencies> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency></dependencies>
2. 配置信息
配置文件application.yml,留神上面的配置信息,上面采纳的是由咱们本人来解析配置的形式
elasticsearch: host: localhost port: 9200 user: elastic pwd: test123 connTimeout: 3000 socketTimeout: 5000 connectionRequestTimeout: 500
阐明
下面配置介绍的是一种偏根底的es文档操作姿态,相比拟于封装得更好的spring-boot-starter-data-elasticsearch
,应用更加灵便
II. SpringBoot联合ES应用
1. RestHighLevelClient 初始化
接下来咱们基于RestHighLevelClient
来操作es,首先第一步就是须要初始化这实例
@Getter@Configurationpublic class ElasticsearchConfiguration { @Value("${elasticsearch.host}") private String host; @Value("${elasticsearch.port}") private int port; @Value("${elasticsearch.connTimeout}") private int connTimeout; @Value("${elasticsearch.socketTimeout}") private int socketTimeout; @Value("${elasticsearch.connectionRequestTimeout}") private int connectionRequestTimeout; @Value("${elasticsearch.user}") private String user; @Value("${elasticsearch.pwd}") private String pwd; @Bean(destroyMethod = "close", name = "client") public RestHighLevelClient initRestClient() { RestClientBuilder builder = RestClient.builder(new HttpHost(host, port)) .setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder .setConnectTimeout(connTimeout) .setSocketTimeout(socketTimeout) .setConnectionRequestTimeout(connectionRequestTimeout)); return new RestHighLevelClient(builder); }}
留神下面的实现,用户名 + 明码并没有应用,当es设置了用户名、明码之后,是通过每次申请时,在申请头基于Basic Auth形式进行身份验证的;前面会介绍到
2. 根本应用
咱们在本机搭建了一个es用于模仿测试,在下面的配置完之后,就能够间接与es进行交互了
es装置能够参考:
- 200605-Centos 装置ElasticSearch - 一灰灰Blog
- 210329-Elastic & Kibana装置与根本应用 - 一灰灰Blog
docker装置:docker pull docker.elastic.co/elasticsearch/elasticsearch:xxx
上面是一个简略的应用姿态
@Servicepublic class EsTest { @Autowired private RestHighLevelClient client; private static String auth; public EsTest(ElasticsearchConfiguration elasticsearchConfiguration) { auth = Base64Utils.encodeToString((elasticsearchConfiguration.getUser() + ":" + elasticsearchConfiguration.getPwd()).getBytes()); auth = "Basic " + auth; } public void testGet() throws Exception { // 文档查问 GetRequest getRequest = new GetRequest("first-index", "_doc", "gvarh3gBF9fSFsHNuO49"); RequestOptions.Builder requestOptions = RequestOptions.DEFAULT.toBuilder(); requestOptions.addHeader("Authorization", auth); GetResponse getResponse = client.get(getRequest, requestOptions.build()); if (getResponse.isExists()) { String sourceAsString = getResponse.getSourceAsString(); System.out.println(sourceAsString); } else { System.out.println("no string!"); } }}
留神下面的实现,有上面几个重要知识点
身份验证
采纳Basic Auth形式进行身份校验,简略来说就是在申请头中增加一个
key = Authorization
value = "Basic " + base64(user + ":" + pwd)
拜访姿态
下面是一个依据id
查问文档的实例,简略能够了解为三步
- 创立:
XxRequest
- 增加申请头:
RequestOptions.Builder.addHeader
- 执行:
client.get(xxRequest, RequestOptions)
III. 不能错过的源码和相干知识点
0. 我的项目
- 工程:https://github.com/liuyueyi/spring-boot-demo
- 源码:https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-boot/142-search-es
1. 微信公众号: 一灰灰Blog
尽信书则不如,以上内容,纯属一家之言,因集体能力无限,不免有疏漏和谬误之处,如发现bug或者有更好的倡议,欢送批评指正,不吝感谢
上面一灰灰的集体博客,记录所有学习和工作中的博文,欢送大家前去逛逛
- 一灰灰Blog集体博客 https://blog.hhui.top
- 一灰灰Blog-Spring专题博客 http://spring.hhui.top