黑马学ElasticSearch(一)

目录:

(1)初识ES-什么是elasticsearch

(2)初识ES-倒排索引 

(3)ES与MySQL的概念对比

(4)安装ES

 (5)安装Kibanan


(1)初识ES-什么是elasticseach

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

黑马学ElasticSearch(一)_第1张图片

 黑马学ElasticSearch(一)_第2张图片

黑马学ElasticSearch(一)_第3张图片

黑马学ElasticSearch(一)_第4张图片 黑马学ElasticSearch(一)_第5张图片

黑马学ElasticSearch(一)_第6张图片

黑马学ElasticSearch(一)_第7张图片 黑马学ElasticSearch(一)_第8张图片

黑马学ElasticSearch(一)_第9张图片 黑马学ElasticSearch(一)_第10张图片

(2)初识ES-倒排索引 

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

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

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

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

黑马学ElasticSearch(一)_第11张图片

黑马学ElasticSearch(一)_第12张图片

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

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

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

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

 黑马学ElasticSearch(一)_第13张图片

 (3)ES与MySQL的概念对比

黑马学ElasticSearch(一)_第14张图片

 黑马学ElasticSearch(一)_第15张图片

黑马学ElasticSearch(一)_第16张图片 黑马学ElasticSearch(一)_第17张图片

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

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

 黑马学ElasticSearch(一)_第18张图片

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

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

黑马学ElasticSearch(一)_第19张图片

(4)安装ES

黑马学ElasticSearch(一)_第20张图片

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

 黑马学ElasticSearch(一)_第21张图片

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

docker network create es-net 

 黑马学ElasticSearch(一)_第22张图片

黑马学ElasticSearch(一)_第23张图片

黑马学ElasticSearch(一)_第24张图片

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`:端口映射配置

运行容器: 

黑马学ElasticSearch(一)_第25张图片

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

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

黑马学ElasticSearch(一)_第26张图片

 (5)安装Kibanan

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

 黑马学ElasticSearch(一)_第27张图片

 

黑马学ElasticSearch(一)_第28张图片

 黑马学ElasticSearch(一)_第29张图片

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`:端口映射配置

查看是否启动:黑马学ElasticSearch(一)_第30张图片 

启动较慢,通过日志查看 

黑马学ElasticSearch(一)_第31张图片

 浏览器就可以访问:

黑马学ElasticSearch(一)_第32张图片

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

Explore on my own:自己设置

选择第二个: 

黑马学ElasticSearch(一)_第33张图片 黑马学ElasticSearch(一)_第34张图片

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

黑马学ElasticSearch(一)_第35张图片

 查询所有数据黑马学ElasticSearch(一)_第36张图片

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

 这也是http的请求接口,只是不过请求路径为空,请求参数不需要参数黑马学ElasticSearch(一)_第38张图片黑马学ElasticSearch(一)_第39张图片

你可能感兴趣的:(elasticsearch,大数据)