Skip to content

第三章 ElasticSearch安装与概述 v1.0 ​

一、概述 ​

1.简介 ​

ElasticSearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。

Elastic Stack(ELK) ,被广泛应用在日志数据分析、实时监控等领域:

  • Kibana:管理Logstash和ElasticSearch等的Web 界面,可以帮助汇总、分析和搜索重要数据日志
  • ElasticSearch:分布式搜索引擎,提供搜集、分析、存储数据三大功能
  • Logstash:日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式
  • (新增)Beats:搜集网络流量数据、搜集系统、进程和文件系统级别的 CPU 和内存使用情况等

优势:高性能,原生支持分布式,可水平扩展;提供Restful接口,可被任何语言调用

2.特性:倒排索引 ​

a.正向索引与倒排索引 ​

正向索引:基于文档id创造索引,查询时先找到文档再确定是否包含词条

倒排索引:基于内容分词,对词条创建索引,记录词条所在文档信息,查询先根据词条获取文档id,再获取文档

b.倒排索引工作流程 ​

存储流程:按语义分词->以词条为索引存储文档id->存入数据库

搜索流程:按语义分词->以词条搜索得到词条所在文档id->存入结果集

image.png

image.png

3.相关概念 ​

a.索引(index) ​

相同类型文档的集合,类似数据库中的表(table)

b.文档(document) ​

即数据,类似数据库中的行(row),文档都是json格式的数据

c.字段(field) ​

json文档中的字段,类似数据库中的列(column)

d.映射(mapping) ​

索引中文档中的字段约束信息,类似表的结构约束(schema)

e.操作语言(DSL) ​

ElasticSearch提供的JSON风格的请求语句,用来操作ElasticSearch,实现CRUD

4.MySQL与ElasticSearch对比 ​

MySQL:擅长事务类型操作,可以确保数据的安全和一致性

ElasticSearch:擅长海量数据的搜索、分析、计算

一、docker安装ElasticSearch ​

1.创建网络 ​

bash
docker network create es-net

2.加载镜像或拉取镜像 ​

bash
docker load -i es.tar

3.运行 ​

bash
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安装Kibana ​

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

三、分词器ik ​

下载:analysis-ik 发布目录,请选择与 Elasticsearch 版本匹配的插件包。

bash
docker volume inspect es-plugins  #查看数据卷目录
#将下载文件拷贝:/var/lib/docker/volumes/es-plugins/_data
docker restart es  #重启容器

四、密码配置 ​

1.修改配置文件 ​

  1. 进入容器:docker exec -it es bash
  2. 启用认证:vi config/elasticsearch.yml
bash
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
  1. 保存后,退出容器,重启ES:docker restart es

2.设置用户密码 ​

  1. 上一步重启ES容器后,再次进入容器:docker exec -it es /bin/bash
  2. 再次进入容器后,执行以下命令:./bin/elasticsearch-setup-passwords interactive
  3. 完成以上的设置后,需要再次重启ES容器:docker restart es