【搜寻系列】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