Bootstrap

什么是ES(Elasticsearch)?详解+操作

elastic:富有弹性的

search:搜索

此软件不再是SpringColud提供的,他也不针对微服务的项目开发

Elasticsearch和Redis/mysqly一样,不仅服务于java开发,其他语言也可以使用

它的功能类似于数据库,能高效的从大量数据中搜索匹配指定关键字的内容

数据保存在硬盘中

Es的底层:

使用了一套名为Lucene的API

这个API提供了全文搜索引擎核心操作的接口,相当于搜索引擎的核心支持,ES是在Lucene的基础上进行完善,实现了开箱即用的搜索引擎

市面上和ES功能类似的软件有:

Solr/MongoDB

为什么需要使用Elasticsearch?

数据库进行模糊查询效率严重低下

所有关系型数据库也有这个缺点:mysql\mariaDB\oracle\DB2等

Elaticsearch主要是为了解决数据库模糊查询性能低下问题

ES进行优化之后,从同样数据库的ES中查询相同条件数据,效率能够提高100倍以上

说到这里就不得不提一下数据库的索引 :

所谓的索引(index) 其实就是数据目录

通常情况下,索引是为了提高查询效率的

索引面试题

1.创建索引会占用硬盘空间

2.创建索引之后,对该表进行增删改操作时,会引起索引的更新,所以效率会降低

3.对数据库进行批量新增时,先删除索引,增加完毕之后再创建

4.不要对数据样本少的列添加索引

5.模糊查询时,查询条件前模糊的情况,是无法启用索引的

6.每次从数据表中查询的数据的比例越高,索引的效果越低

数据库索引分为两大类:

1.聚焦索引

2.非聚焦索引

所谓聚焦索引就是数据库保存数据的物理顺序依据,默认情况下就是主键id,所以按照id查询数据库中的数据效率非常高

而非聚焦索引则是如果在非主键上添加索引就是非索引聚焦了

而模糊查询时如查询'%XX',使用的就是前模糊条件,而使用索引又必须明确前面的内容是什么,所以前模糊查询是不能使用索引的,只能做全表的查询,但是查询效率低

所以当我们要做根据用户输入关键字进行模糊查询时, 需要使用全文搜索引擎来优化

Elasticsearch运行原理

要想使用ES来提高模糊查询效率

要先将数据库复制到ES中

在新增数据到ES中,ES可以对指定的列进行分词索引保存到索引库中

形成倒排索引结构

ES的简单使用:     

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

进行pom文件配置后,需要创建一个能向ES发送请求的文件

这种能向指定url发送请求的格式文件

;