ElasticSearch第一章(入门介绍)

1:什么是ElasticSearch

ElasticSearch(弹性搜索),简称ES。

ES是一个分布式,RESTFul风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack(Elastic技术栈简称ELK) 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。

我们可以知道ES有三个特点:

1:分布式(非常方便实现集群部署)

2:RESTFul风格(使用RESTFul进行搜索)

3:搜索引擎(用于数据分析,首先数据得在ES中才行)

2:为什么要使用ElasticSearch

ES主要用来数据搜索和数据分析,这里有读者问不是有数据库吗?比如mysql的,ES和关系型数据库的分工是什么?我们下边举例说明

2.1:为什么不使用mysql

**举例1:**首先我们那熟悉的关系型数据mysql来举例。我们查找关系型数据库的商品表、数据量很大的时候,这里只是几条简单的数据和表用来举例,实际情况远远比这里复杂。

当我们要查找title="手机"、 "小米充电器"、 "华为" 等等字段的时候,势必要用到模糊查询

select * from order where title like "%目标字段%" ,这就很难使用到索引,即使我们在title字段上创建了索引,性能也会很差。当数据量大、并且title的内容很多的时候是个灾难

**举例2:**我们想象一下百度的搜索引擎,当我们程序员写了错误代码,到百度上搜索一个关键字查找答案的时候,百度是怎么处理的。比如程序出现的IO异常,我们去百度搜索,根据词条来检索出来我们需要的内容,然后把网上的资源都汇总起来。这个时候百度不会把网络资源放到mysql中,那样在查找关键字,得多慢。当然搜索引擎的技术很复杂。这里就例子就是说明了搜索引擎有多快,为什么有的情况不适用关系型数据库。

结果就是关系型数据库不适合做海量数据的搜索、分析、计算

2.2:为什么要使用ES

前边我们知道关系型数据库的检索困难,比如大数据量的文本检索、计算等等。

那么ES是怎样实现的呢?如下图所示,当我们查询字段的时候

1:首先对title进行分词,分成小米、手机、华为、充电器、手环5个词

2:根据分词创建倒排索引,也就是词条和文档id的对照关系

3:进行查询的时候根据倒排索引,去词条列表中查询到文档id

4:根据文档id查询文档,存储结果集,然后返回。

这样就不会想mysql一样,模糊查询,几千万的数据也得一条一条比对,从而提升了效率。ES适合做海量数据的分析、计算,没有关系型数据库的事务概念

思考点:这样查询是很快、没问题?但是对大量的数据,比如上千万的数据进行分词,然后创建倒排索引这个过程怎么样。我也不知到、我们接着学习吧,也会能找到答案。

2.3:ES和mysql对比

1:mysql存储是表的形式存储数据,ES是文档存储,文档就是数据,将文档格式化成json存储。

2:关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)

Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields)

总结:ES和关系型数据库各有所长、各有所短,不是替换关系,是互补关系。

3:ES的安装

3.1:ES的安装

首先官网下载自己适合的版本, ****由于ES是java语言开的,所以需要实现配置JDK环境。

官网地址如下:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

当然最新ES的8.x版本自带了jdk,所以也就不需要了。但是7.X的版本兼容的JDK版本需要去官方查看对照表

安装步骤:主要参考了别人的博客Linux centos7.6 安装elasticsearch8.x (es8) 教程_centos7.6anzhuangelasticsearch8.9-CSDN博客

这里是使用了ES的8.10.0版本,不需要jdk了直接下载安装

1:下载ES

elasticsearch-8.11.0-linux-x86_64.tar.gz放到centos中的 /home下边,然后解压

tar -zxvf elasticsearch-8.11.0-linux-x86_64.tar.gz

2:解压安装

Matlab 复制代码
#创建组esgroup
groupadd esgroup
#创建用户esroot 密码是123456
useradd esroot -p 123456
#赋权限
chown -R esroot:esgroup /home/elasticsearch-8.11.0
#切换账户esroot
su esroot
#进入bin目录
cd /home/elasticsearch-8.11.0/bin/
#启动ES
./elasticsearch
#后台启动 
./elasticsearch -d


#查看防火墙  如果是看到绿色的字体 active(running)  就意味着防火墙是打开状态
sudo systemctl status firewalld
#关闭防火墙
sudo systemctl stop firewalld
#再次查看防火墙

3:访问自己的服务器地址

http://172.16.35.132:9200/

或者 curl http://172.16.35.132:9200/ 验证

3.2:Kibana安装

Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作。 你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互

**1:**下载和ES同版本的jar,kibana-8.11.0-linux-x86_64.tar.gz

**2:**将jar放到home目录下

**3:**解压,修改配置文件,然后启动

Matlab 复制代码
#解压
tar -zxvf kibana-8.11.0-linux-x86_64.tar.gz

#修改配置文件在config目录下的kibana.yml
#Kibana端口
server.port: 5601
#所有主机都能访问
server.host: "0.0.0.0"
#配置es的访问地址  "http://es服务公网IP:9200" 
elasticsearch.hosts: ["http://172.16.35.132:9200"]
xpack.reporting.capture.browser.chromium.disableSandbox: false

#设置kibana中文显示 
i18n.locale: "zh-CN"

#然后设置esroot用户和esgroup组的权限
chown -R esroot:esgroup /home/home/kibana-8.11.0

#切换到esroot用户
su esroot

#进入bin目录启动
./kibana

**4:**访问页面,验证启动成功

http://172.16.35.132:5601/

在使用kibana的过程中,发现ES的默认分词适用于英文和拉丁文,对中文支持不好。

3.3:IK分词器安装

ES默认的分词器对中文支持不好,在上面我们看到了都是一个字一个字分的,很不好用,所以我们选择IK分词器。

**1:**首选去github官网,下载对应的插件IK分词插件,分词器版本必须跟ES版本一致,这里本人下载版本是 elasticsearch-analysis-ik-8.11.0.zip,github官网地址如下:

https://github.com/medcl/elasticsearch-analysis-ik

**2:**进入ES的插件目录

Matlab 复制代码
#进入ES的插件目录
/home/elasticsearch-8.11.0/plugins
#创建ik文件夹
mkdir ik
cd ik
#将分词插件IK的zip包放到ik文件夹里边,解压 然后重启ES
unzip elasticsearch-analysis-ik-8.11.0.zip

查看重启日志,里边有了IK的插件

3:IK分词器介绍

在kibana中,我们使用IK分词器有两种分词粒度选择

**k_smart:**会做最粗粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,国歌",适合Phrase 查询。

**ik_max_word:**会将文本做最细粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,国国,国歌",会穷尽各种的组合可能,适合Term Query;

相关推荐
hengzhepa17 小时前
ElasticSearch备考 -- Async search
大数据·学习·elasticsearch·搜索引擎·es
hengzhepa1 天前
ElasticSearch备考 -- Search across cluster
学习·elasticsearch·搜索引擎·全文检索·es
hengzhepa3 天前
ElasticSearch备考 -- 多字段查询
学习·elasticsearch·搜索引擎·全文检索·es
hengzhepa3 天前
ElasticSearch 备考 -- 备份和恢复
大数据·学习·elasticsearch·搜索引擎·es
珍珠是蚌的眼泪5 天前
Elasticsearch基础_2.数据类型
elasticsearch·es·date·text·keyword·动态映射
冬日9微醺14 天前
白酒冷知识 普通人判断酒好坏这三招就够了
安全·阿里云·es
丁总学Java16 天前
elasticsearch同步mysql方案
es
请叫我江同学呀24 天前
关于elasticsearch的terms查询超过最大terms数
数据库·elasticsearch·搜索引擎·es·非关系型数据库
冬日9微醺1 个月前
白露微凉,白酒暖肠
安全·阿里云·es
灰色孤星A1 个月前
ElasticSearch学习笔记(三)RestClient操作文档、DSL查询文档、搜索结果排序
笔记·学习·elasticsearch·微服务·kibana·es·索引