目录
ES简介
是一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控
- 易扩展
- 高性能(倒排索引)
- 支持分布式,可水平扩展
- 提供Restful接口,可被任何语言调用
ELK:ES的核心技术栈
Lucene:搜索引擎类库,提供搜索引擎的核心API
倒排索引
正向索引:基于文档id创建索引,查询时先找文档判断是否包含词条;
模糊查询,需要逐个扫描,最终返回结果集
倒排索引
先对内容分词,对词条创建索引,并记录含有该词条的文档id;查询时先根据词条查询文档id,然后返回文档;还可以根据匹配程度排序
ES是面向文档存储的,文档数据会被序列化为Json格式存储
- 索引:相同类型的文档的集合
- 映射:索引中文档的字段约束信息,类似表的结构约束
MySQL与ES
结构对比
各司其职
搭建
安装ES
- 因为我们还需要部署 kibana 容器,需要让 es 和 kibana 容器互联。这里先创建一个网络:
docker network create es-net
- 安装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
命令解释:
- -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:端口映射配置
访问地址:
http://192.168.32.129:9200
即可看到 elasticsearch 的响应结果
安装kibana
kibana 可以给我们提供一个 elasticsearch 的可视化界面,便于我们学习命令
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:端口映射配置
控制面板:
http://192.168.32.129:5601/app/dev_tools#/console
安装IK分词器
由于国内访问 GitHub 较慢,我们选择离线模式安装。
安装插件需要知道 elasticsearch 的 plugins 目录位置,而我们用了数据卷挂载,因此需要查看 elasticsearch 的数据卷目录,通过下面命令查看
docker volume inspect es-plugins
未完待续
版权归原作者 \Qinsiyang 所有, 如有侵权,请联系我们删除。