Elasticsearch

Elasticsearch 是什么? | Elastic

Elastisearch-介绍及安装

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

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

基本概念

Index(索引)

Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。

所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。

  • 动词,相当于mysql的insert
  • 名词,相当于mysql的database

Type(类型)

在 Index(索引)中,可以定义一个或多个类型。

类似于 MySQL 的 Table,每一种类    型的数据存放在一起。

在Elasticsearch6.0之后,Type 类型被移除。

Document(文档)

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

倒排索引

Docker安装Elasticsearch、Kibana

1. 下载镜像文件

# 存储和检索数据
docker pull elasticsearch:7.4.2

# 可视化检索数据
docker pull kibana:7.4.2

2. 配置挂载数据文件夹

# 创建配置文件目录
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. 启动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 数据说明启动成功。

4. 设置 Elasticsearch 随Docker启动

# 当前 Docker 开机自启,所以 ES 现在也是开机自启
docker update elasticsearch --restart=always

5. 启动可视化Kibana

docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.163.131:9200 \
-p 5601:5601 \
-d kibana:7.4.2

-e ELASTICSEARCH_HOSTS=http://192.168.163.131:9200: 这里要设置成自己的虚拟机IP地址

浏览器输入192.168.163.131:5601 测试:

6. 设置 Kibana 随Docker启动

# 当前 Docker 开机自启,所以 kibana 现在也是开机自启
docker update kibana --restart=always

7.IK分词器在ES中的配置


因为我这边的Es版本是7.6.2;因此我的IK分词器版本也应该是7.6.2
,我这边下载的是elasticsearch-analysis-ik-7.6.2.zip,解压出来后目录结构如下:

在这里插入图片描述
接下来在Es目录结构下的plugins新建一个名称为ik的文件夹,将ik解压出来的所有文件全部放入ik文件夹中;

重启Es,观察控制台打印出来的日志


表明ik分词器插件加载成功!
可在bin统计目录下通过命令elasticsearch-plugin list命令可查看


IK分词器的基本用法
IK分词器有两种分词模式:ik_max_word和ik_smart模式。

ik_smart模式是粗粒度的拆分;
举例子:“中国共产党”这个名词,如果使用ik_smart模式来搜索的话,结果如下


ik_max_word模式是细粒度的拆分;
同样的:“中国共产党”这个名词,如果使用ik_max_word模式来搜索的话,结果如下

如果想所搜一个自定义的词,比如:中国天与明上的地图
,需要自己配置字典,配置方法如下:

在Es目录下的plugins下ik分词器config下有个IKAnalyzer.cfg.xml,打开该文件
在my_ming.dic中填入自己自定义的词典文件,我这里是my_ming.dic,该文件在与IKAnalyzer.cfg.xml同级目录下,my_ming.dic中填入自定义词语,重启ES服务即可。

高级检索 测试 所需测试数据:

es测试数据.json · 坐看云起时/common_content - Gitee.com

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值