文章目录
- 介绍
- 一、什么是elasticsearch?
- 二、基本概念
- 三、安装elasticsearch与kibana
- 四、安装kibana(跟ES要在同一个网络中)
- 五、IK分词器
- 总结
介绍
好处:可以帮助从海量数据中查找需要的内容;
一、什么是elasticsearch?
一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能;
什么是elastic stack(ELK)?
是以elasticsearch为核心的技术栈,包括beats、logstash(数据收集)、Kibana(图形展示)、elasticsearch;
Lucene:
是一个搜索类库,提供了很多api,elasticsearch是基于此实现的;
正排索引:
每一行进数据行遍历,看其中的内容是否满足条件,如果满足就将其放入词库中,否则进行删除;
根据文档id创建索引,查找词条时,必须先找到文档,然后判断文档中是否含有该词条;
倒排索引:
基于词条创建索引,以词条作为唯一,按照词条分,记录含有该词条的文档信息——>保证了词条的唯一性
查询时先根据含有的词条->得到文档id,进而得到文档title
二、基本概念
在elasticsearch中索引相当于数据库中的表,索引中文档的字段映射约束信息,类似于表中的结构约束;
Restful风格的好处:可以利用url进行请求增删改查,脱离了语言;
Mysql与Elasticsearch场景:
比如商品的查询——>用Elasticsearch,如果是增删改——>用mysql:因为他删除事务类型的操作,可以保证数据的安全和一致性;
三、安装elasticsearch与kibana
安装kibana:是因为它是Elasticsearch图形化界面方便DSL(es中的crud实现)
1.加载得到镜像
2.执行得到es容器,并且加载到es-net网络中
然后两个-p:第一个是用户访问的端口,第二个是各个es节点互连的一个端口;
最后就是镜像名称
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
最后再docker ps确认一下容器是否有了
四、安装kibana(跟ES要在同一个网络中)
作用:帮助Elasticsearch写CRUD语句,比较方便,有提示;
在同一个网络,可以根据容器名称互连,因为Kibana需要辅助ES的CRUD操作,所以需要知道ES地址,并且版本需要一致;
它的启动比较慢,docker可以利用docker logs查看日志;
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:7.12.1
五、IK分词器
有两种分词模式:
ik_smart:最小粒度,分词较少,但是占用内存就少了
ik_max_word:最大粒度,分词会较多