目录
引言
最近在回顾整理,把之前写的项目中的搜索模块的相关内容回顾了一下,做了个关于 Elasticsearch在项目中使用 的脑图,分享出来给大家有需要的人。我顺便再用文章写一遍加深一下印象,然后加一些脑图上不好写的。(都是些基础的使用,适合需要学习使用的初学者,大佬还请无视~)
一、为什么要使用Elasticsearch
作为一个商城,搜索功能至关重要。用户一般访问一个商城网站,基本上都是已经有了某样商品的购买需求,进入商城网站后就会直接搜索该类商品。这个时候,搜索速度和搜索结果的准确性就显得非常重要了。不论是 搜索速度慢,还是搜索结果不准确,都是会严重影响用户体验,造成用户流失。
传统的搜索是直接访问数据库来搜索,一旦数据量和访问量上升了,对数据库的压力非常大,极有可能造成数据库服务宕机。就算服务器能抗住访问量,搜索速度也会很慢。你可能会说,给数据库建个索引,确实,这样是会快很多,但是相比Elasticsearch来说,还是比较慢了。并且注意一点,加了索引之后,搜索效果就不好了,前置模糊查询时,会使索引失效,然后变成全表扫描,大数据量的时候,来个全表扫描? 太恐怖了!!!
所以,这个时候就该 Elasticsearch上场了~~~
二、什么是Elasticsearch
官网说明:Elasticsearch 是一个分布式的RESTful风格的搜索和数据分析引擎,能够解决不断涌现的各种用例。作为Elastic Stack 的核心,它集中存储了您的数据,帮助您发现意料之中以及意料之外的情况。👉官网
简单来说Elasticsearch是一个搜索引擎,并且可以对数据进行分析。
Elasticsearch的一些特点:
- 分布式,无需人工搭建集群,并尽力隐藏分布式系统的复杂性。
- RESTful,API遵循REST原则,容易上手。
- 对海量数据进行近实时的处理
三、Elasticsearch相关
(一)Kibana
Kibana是一个基于Node.js的Elasticsearch索引库数据统计工具,可以利用Elasticsearch的聚合功能,生成各种图表,如柱形图,线状图,饼图等。并且Kibana还提供了操作Elasticsearch索引数据的控制台,还API提示,不论是学习Elasticsearch的时候,还是使用Elasticsearch的时候,都很方便,用处也很大。
(二)IK分词器
项目中使用的一个中文分词器,想深入了解的可以去ik的社区看看:ik分词器社区
(这两个以及Elasticsearch的基础概念和语法 这里就不详述了,本文重点不在这。)
四、Elasticsearch的使用
(一)将数据导入Elasticsearch的索引库
Ⅰ、创建搜索微服务
我用Springboot搭的,没什么好说的,注意配置文件配置一下节点和默认名称。
spring:
application:
name: search-service
data:
elasticsearch:
cluster-name: elasticsearch #默认其实就是elasticsearch,但最好还是配置一下
cluster-nodes: xxx.xxx.xxx.xxx:9301 #节点地址和端口
(我没用集群