黑马学ElasticSearch(一)

目录:

(1)初识ES-什么是elasticsearch

(2)初识ES-倒排索引 

(3)ES与MySQL的概念对比

(4)安装ES

 (5)安装Kibanan


(1)初识ES-什么是elasticseach

随着业务的发展数据量越来越庞大,传统的MySQL的数据库,渐渐的难以满足复杂的 业务需求,所以在微服务的架构下,都会用到一种分布式搜索的技术,下面我们学习分布式当中流行的elasticsearch

 

 

 

 

(2)初识ES-倒排索引 

   Lucene的核心技术就是倒排索引

 数据库一般情况下,会基于id创建一个索引,形成一个b+树,根据id进行检索的速度非常快,这种方式的索引是正向索引

如果搜索的字段不是id,是普通title字段,一般它不会加索引,即使加了索引,而使用的模糊匹配,即使字段上有索引,它也不会生效,没有索引,数据库会逐条扫描,判断每一行数据里面是否包含手机,不包含丢弃,逐行扫描最终会拿到完整的结果集

如果数据表的数据非常多,做局部内容检索的时候,逐行扫描性能非常差

倒排索引:经过了两次检索,第一次是根据用户的词条,去词条列表中进行查找,找到对应的文档id。第二次是根据文档id找文档。虽然是两次查找,但是每次都经过了索引进行查找,总的查询效率比逐条扫描高的多

 正向索引:正向索引当中找是否包含手机的,需要一行一行的看,是先找到文档,看这条数据符合不符合要求   是根据文档找到词

倒排索引:是基于词条创建索引,关联到文档,小找到词,再找到对应的文档,是根据词找文档

倒排索引更适合与基于文档的内容够进行搜索,也就是说更复杂的需求 

 

 (3)ES与MySQL的概念对比

 

 

 在MySQL里sq写好了通过Connnection把sq发出去,发给Mysql处理

在ES里DSL 写好了是基于http的请求发出去的,在ES中暴露的是RestFUL的接口,跟语言无关,任何语言只要能发http请求都可以把DSL发给ES处理

 

 他们两个是各司其职的,比如你现在做的是下单付款的业务,对事务要求很高,应该使用MySQL作为数据存储

比如你做的是商品的搜索、页面的搜索,搜索比较复杂,使用ES去做

(4)安装ES

 也需要安装kibanan,因为它提供了一个工具,可以很方便的让我们去编写DSL语句从而去操作ES

 

可以使用docker compose 也可以一键互联的,这里我们采用分别部署的方式,因为将来我们可能不需要kibanan只需要ES,但别部署之后,需要让他们手动互联了 

docker network create es-net 

 

docker run -d \
	--name es \
    -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:7.12.1

- `-e "cluster.name=es-docker-cluster"`:设置集群名称

- `-e "http.host=0.0.0.0"`:监听的地址,可以外网访问

- `-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"`:内存大小

- `-e "discovery.type=single-node"`:非集群模式

- `-v es-data:/usr/share/elasticsearch/data`:挂载逻辑卷,绑定es的数据目录

- `-v es-logs:/usr/share/elasticsearch/logs`:挂载逻辑卷,绑定es的日志目录

- `-v es-plugins:/usr/share/elasticsearch/plugins`:挂载逻辑卷,绑定es的插件目录

- `--privileged`:授予逻辑卷访问权

- `--network es-net` :加入一个名为es-net的网络中

- `-p 9200:9200`:端口映射配置

运行容器: 

 查看一下:是否启动成功:

 在浏览器通过ip地址也可以查看是否启动成功:

 (5)安装Kibanan

kibanan包需要提前转入到linux中:

 

 

 

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.12.1

- `--network es-net` :加入一个名为es-net的网络中,与elasticsearch在同一个网络中

- `-e ELASTICSEARCH_HOSTS=http://es:9200"`:设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch

- `-p 5601:5601`:端口映射配置

查看是否启动: 

启动较慢,通过日志查看 

 浏览器就可以访问:

可以Add data:它帮助我们导入一些数据

Explore on my own:自己设置

选择第二个: 

 

有导航栏进行各种各样的管理,Dev Tools工具是DSL的控制台:帮助我们去发送DSL语句,本质就是发送一个RestFul的请求到ES当中

 查询所有数据

 GET 请求,_search :做一次搜素   下面是DSL语句,那么它怎么知道ES呢?在安装的时候指定了ES地址,只需要把DSL语句准备好,请求方式和路径准备好,就可以发送了

 这也是http的请求接口,只是不过请求路径为空,请求参数不需要参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值