全文搜索引擎-初识Elasticsearch

章节目录:

    • 一、Elasticsearch简介
    • 二、基本概念
      • 2.1 索引、类型、文档
      • 2.2 与Mysql概念映射
      • 2.3 倒排索引
    • 三、安装Es与可视化工具Kibana
      • 3.1 镜像下载
      • 3.2 Es文件挂载
      • 3.3 启动Elasticsearch
      • 3.4 启动Kibana
      • 3.5 设置自启动
    • 四、结束语

一、Elasticsearch简介

全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据

Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。ElasticLucene 的封装,提供了 REST API 的操作接口,开箱即用。

二、基本概念

2.1 索引、类型、文档


  • Index(索引)

    • Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。

    • 它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写


  • Type(类型):

    • 在 Index(索引)中,可以定义一个或多个类型,类似于 MySQL 的 Table,每一种类型的数据存放在一起。

    • 注意:在Elasticsearch6.0之后,Type 类型被移除!

    • 原因如下

      1. 在关系型数据库中table是独立的(独立存储),但es中同一个index中不同type是存储在同一个索引中的(lucene的索引文件),因此不同type中相同名字的字段的定义mapping必须一致

      2. 不同类型的“记录”存储在同一个index中,会影响lucene压缩性能

      3. 基于index的统计,一个type下的文档分数会影响其它type下的分数


  • Document(文档)

    • 保存在某个 Index(索引)下,某种 Type(类型)的一个数据,Document(文档)是JSON格式的,Document 就像是 MySQL 中某个 Table 里面每一行的数据,字段就是Document里的属性。

2.2 与Mysql概念映射

全文搜索引擎-初识Elasticsearch_第1张图片

2.3 倒排索引

正排索引:是以文档对象的唯一ID作为索引,以文档内容作为记录的结构。

倒排索引:Inverted index,指的是将文档内容中的单词作为索引,将包含该词的文档ID作为记录的结构。

有了倒排索引,能快速、灵活地实现各类搜索需求。整个搜索过程中我们不需要做任何文本的模糊匹配。

全文搜索引擎-初识Elasticsearch_第2张图片

三、安装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。

全文搜索引擎-初识Elasticsearch_第3张图片

3.5 设置自启动

# Es自启动
$ docker update elasticsearch --restart=always

# kibana自启动
$ docker update kibana --restart=always

四、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

你可能感兴趣的:(微服务,搜索引擎,elasticsearch,lucene)