7.ElasticSearch

        我们在之前的课程中,已经实现了我们基础的微服务框架的建设。现在,我们可能又会遇到以下问题。

        那就是我们搜索速度的问题,比如我们想在数据库里面使用关建字搜索怎么办?有人可以说使用mysql直接搜索呀。可是问题来了如果你的数据量很大比如上千万,上亿条,那你不管如果去优化代码,mysql的查询也肯定是秒级的。

        这个问题就引出了我们的ElasticSearch.

        什么是ElasticSearch

        ElasticSearch本质上是一个数据库,它是一个专门为搜索而生的数据库。它本质是基于倒排排序所设计的数据库。其就是通过将文章里面的词建档,而每个词都有独立的id。所以,进行模糊查询的时候自然就很快了。

       这个数据库可以取代mysql吗?不,正常情况下他们都是共生的关系,我们将MySQL作为业务数据库,ES作为查询数据库,用来实现读写分离,缓解MySQL数据库的查询压力,应对海量数据的复杂查询。你看下面的一张图就知道了。

        

        不过,话也说会来了。ES也只是在一些大公司里面才会用到。一般面试的话,面试官也不会问。所以嘛,那就我们主要讲如何应用吧。至于底层是怎么使用的,我们就不讲了。

        springboot整合ElasticSearch

        微服务我们讲了这么多,但是通用的一点就是每个功能就是一个微服务,ES也不例外,我们想使用ES进行查询的话,就相当于我们新建了一个微服务。

        1.使用spring 初始化工具,创建我们的项目点击下一步

        

        2.导入我们的依赖项

引入我们依赖

1 RestHighLevelClient介绍
        默认情况下,ElasticSearch使用两个端口来监听外部TCP流量。

        9200端口:用于所有通过HTTP协议进行的API调用。包括搜索、聚合、监控、以及其他任何使用HTTP协议的请求。所有的客户端库都会使用该端口与ElasticSearch进行交互。
        9300端口:是一个自定义的二进制协议,用于集群中各节点之间的通信。用于诸如集群变更、主节点选举、节点加入/离开、分片分配等事项。
        RestHighLevelClient是ES的Java客户端,它是通过HTTP与ES集群进行通信。

<!--引入es-high-level-client相关依赖  start-->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.10.0</version>
</dependency>
 
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-client</artifactId>
    <version>7.10.0</version>
</dependency>
 
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.10.0</version>
</dependency>
<!--引入es-high-level-client相关依赖  end-->

加入我们的ES配置

# es配置
# es用户名
elasticsearch.userName=elastic
# es密码
elasticsearch.password=elastic
# es host ip 地址(集群),多个以","间隔
elasticsearch.hosts=127.0.0.1:9200
# es 请求方式
elasticsearch.scheme=http
# es 连接超时时间(ms)
elasticsearch.connectTimeOut=1000
# es socket 连接超时时间(ms)
elasticsearch.socketTimeOut=30000
# es 请求超时时间(ms)
elasticsearch.connectionRequestTimeOut=500
# es 最大连接数
elasticsearch.maxConnectNum=100
# es 每个路由的最大连接数
elasticsearch.maxConnectNumPerRoute=100

想象一下,我们如果是一名高达驾驶员,我们要操作高达我们需要一些什么?

当然是应该驾驶室了!

这个也一样,我们要操作这个的第一步就是创建我们的client.

        

Connectingedit

You can connect to the Elastic Cloud using an API key and the Elasticsearch endpoint

// URL and API key
String serverUrl = "https://localhost:9200";
String apiKey = "VnVhQ2ZHY0JDZGJrU...";

// Create the low-level client
RestClient restClient = RestClient
    .builder(HttpHost.create(serverUrl))
    .setDefaultHeaders(new Header[]{
        new BasicHeader("Authorization", "ApiKey " + apiKey)
    })
    .build();

// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(
    restClient, new JacksonJsonpMapper());

// And create the API client
ElasticsearchClient esClient = new ElasticsearchClient(transport);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值