一、Elasticsearch简介
全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称
Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。Elastic 的底层是开源库
Lucene。但是,你没法直接用Lucene,必须自己写代码去调用它的接口。Elastic是Lucene的封装,提供了REST API的操作接口,开箱即用。
二、基本概念
2.1 索引、类型、文档
-
Index(索引):
-
Elastic 会索引所有字段,经过处理后写入一个反向索引(
Inverted Index)。查找数据的时候,直接查找该索引。所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。 -
它是单个数据库的同义词。每个
Index(即数据库)的名字必须是小写。
-
-
Type(类型):
-
在 Index(索引)中,可以定义一个或多个类型,类似于 MySQL 的 Table,每一种类型的数据存放在一起。
-
注意:在Elasticsearch6.0之后,Type 类型被移除!
-
原因如下:
-
在关系型数据库中table是独立的(独立存储),但es中同一个
index中不同type是存储在同一个索引中的(lucene的索引文件),因此不同type中相同名字的字段的定义(mapping)必须一致。 -
不同类型的“记录”存储在同一个
index中,会影响lucene的压缩性能。 -
基于
index的统计,一个type下的文档分数会影响其它type下的分数。
-
-
-
Document(文档):
-
保存在某个
Index(索引)下,某种 Type(类型)的一个数据,Document(文档)是JSON格式的,Document就像是MySQL中某个Table里面每一行的数据,字段就是Document里的属性。
-
2.2 与Mysql概念映射
2.3 倒排索引
正排索引:是以文档对象的唯一ID作为索引,以文档内容作为记录的结构。
倒排索引:
Inverted index,指的是将文档内容中的单词作为索引,将包含该词的文档ID作为记录的结构。有了倒排索引,能快速、灵活地实现各类搜索需求。整个搜索过程中我们不需要做任何文本的模糊匹配。
三、安装Es与可视化工具Kibana
3.1 镜像下载
# 存储和检索数据
$ docker pull elasticsearch:7.4.2
# 可视化检索数据
$ docker pull kibana:7.4.2
3.2 Es文件挂载
# 创建配置文件目录
$ mkdir -p /mydata/elasticsearch/config
# 创建数据目录
$ mkdir -p /mydata/elasticsearch/data
# 将/mydata/elasticsearch/文件夹中文件都可读可写
$ chmod -R 777 /mydata/elasticsearch/
# 配置任意机器可以访问 elasticsearch
$ echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
3.3 启动Elasticsearch
# 命令后面的 \是换行符,注意前面有空格
$ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
- 参数说明:
-p 9200:9200 -p 9300:9300:向外暴露两个端口,9200用于HTTP REST API请求,9300 ES 在分布式集群状态下 ES 之间的通信端口。-e "discovery.type=single-node":es 以单节点运行。-e ES_JAVA_OPTS="-Xms64m -Xmx512m":设置启动占用内存,不设置可能会占用当前系统所有内存。- -v:挂载容器中的配置文件、数据文件、插件数据到本机的文件夹。
-d elasticsearch:7.6.2:指定要启动的镜像。
- 状态查看:访问 IP:9200 看到返回的
json数据说明启动成功。
3.4 启动Kibana
$ docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://yourIP:9200 \
-p 5601:5601 \
-d kibana:7.4.2
- 状态查看:访问 IP:5601。
3.5 设置自启动
# Es自启动
$ docker update elasticsearch --restart=always
# kibana自启动
$ docker update kibana --restart=always
四、结束语
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。