ElasticSearch的简单尝试

 本文主要是对ElasticSearch中数据进行简单的增删改查的描述,如有谬误,欢迎指正


目前的问题

我们平时用SpringBoot开发项目的时候,由于SpringBoot本身是I/O繁杂型的框架。所以项目当中在进行商品搜索的时候,若采用MySQL进行进行搜索,由于MySQL将数据保存了磁盘之上,在操作的时候会有大量的磁盘I/O,导致查询效低。随着数据量的增大,查询数据的速度也会越来越慢,我们可通过数据库索引、SQL优化来提升查询效率,但是对于全文检索(模糊查询like)则也无能为力。

另外采用MySQL搜索的时候,不能进行分词操作,所谓分词,比如说在搜索框当中搜索关键词:华为手机电脑,那么在使用MySQL进行搜索的时候,只能匹配到关键词: 华为手机电脑,但是同学在使用淘宝、京东时候可以发现,在搜索:华为手机电脑的时候,在结果当中会出现手机、电脑等商品,也就是说在淘宝、京东进行搜索的时候,将关键词:华为手机电脑进行了分词操作,关键词被分为了华为手机、电脑,这样在匹配结果的时候,进行分词匹配。细心的同学可能会发现,在搜索结果当中,搜索的关键词会与其它词在显示有所区别,也就是我们常说的高亮显示,而如果使用MySQL搜索进行处理,则不太容易。

综上所述,关于搜索部分主要有如下三个问题需要我们解决:

  • 查询效率
  • 分词
  • 高亮显示

针对以上问题,可以使用全文检索引擎来解决。如目前比较常用的ElasticSearch。

Index (索引)

将非结构化数据中的一部分信息提取出来,重新组织,使其变得具有一定结构,然后对此有一定结构的数 据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引

相当于Mysql 中的 Database

索引注意事项:索引的名字必须是全部小写,不能以下划线开头,不能包含逗号

Type (类型)

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

类似Mysql 中的table ,每一种类型的数据放在一起。

_doc: ElasticSearch 新版本默认的类型

注意:es7中取消了type

在 5.X 版本中,一个 index 下可以创建多个 type;

在 6.X 版本中,一个 index 下只能存在一个 type;

在 7.X 版本中,直接去除了 type 的概念,就是说 index 不再会有 type。

Document (文档)

保存在某个索引(index)下,某种类型(type)的一个数据(Document),文档是json 格式的。

文档是ElasticSearch中存储的实体,类比关系型数据库,每个文档相当于数据库表中的一行数据。

Field(属性)

一个文档中,可以包含多个属性。类似于MySQL表中的一行数据存在多个列。

倒排索引(反向索引)

将存放的数据,以一定的方式进行分词,并且将分词的内容存放到一个单独的分词库中。

当用户去查询数据时,会将用户的查询关键字进行分词。

然后去分词库中匹配内容,最终得到数据的id标识。

根据id标识去存放数据的位置拉取到指定的数据。

尝试

我们接下来先来安装

mkdir -p /root/docker_elasticsearch/config
mkdir -p /root/docker_elasticsearch/data

echo "http.host: 0.0.0.0"  >>  /root/docker_elasticsearch/config/elasticsearch.yml

[root@localhost ~]# mkdir -p /root/docker_elasticsearch/config
[root@localhost ~]# mkdir -p /root/docker_elasticsearch/data
[root@localhost ~]# echo "http.host: 0.0.0.0"  >>  /root/docker_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值