简介
在写这篇文章之前,首先需要理解下需求。公司现在有一项目,使用Spring boot 2.3.2 ,在项目中有一个搜索模块,
需要实现类似百度搜索智能提示一些信息。而这个接口用模糊搜索去数据库查询这种方式虽然也可以实现,但应该没有哪
个项目真的这样做吧,毕竟如果需要检索的源数据足够大,这个接口又需要走数据库 IO,不管是效率好是可行性都不适合 。
这种搜搜要做到几乎实时的显示,而为了达到这种目的,需要一个高效的搜索框架,考虑到的有 Solr 和 Elasticsearch ,都
可 以达到这样的目的。最后选择使用 Elasticsearch ,本人正好负责这个模块,就此总结一下从 0 到 1 实现搜索。
搭建案例
因为本人之前不熟悉Elasticsearch ,就需要先了解下它的原理,最好是先实现一个 demo ,再分析其原理。
在搭建案例之前,首先得部署Elasticsearch 服务,部署以及可能遇到的问题: https://www.cnblogs.com/bytecodebuffer/p/13801418.html
案例搭建:https://www.cnblogs.com/bytecodebuffer/p/13808659.html
虽然实现了搜搜,那么为何 Elasticsearch 是能够实现高效的搜索?关键原因其使用倒叙索引
倒排索引为何比mysql快: https://blog.csdn.net/weixin_44588495/article/details/105340593
了解Elasticsearch
官方简绍: Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。
官网地址:https://www.elastic.co/cn/elasticsearch/
首先,Elasticsearch 与 MySQL 对比, Elasticsearch 并不是关系型的数据库,而是一个文档形的,内部数据以文档的形式存储,每一行的数据称为一个文档
,而相对于 mysql 表结构,在Elasticsearch 中称为一个 type ,对比如下