【搜寻系列】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
@Configuration
public 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
上面是一个简略的应用姿态
@Service
public 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