乐趣区

关于springboot:SpringBoot-ES基本项目搭建实例

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

退出移动版