参考文档:
ElasticSearch高亮显示
json字符串转换
thymeleaf获取后台传到页面上的html标签

与上一篇文章day5隔了有一个多星期的时间,终于将ElasticSearch成功的引入了我的个人博客上,在开始整合之初,我对搜索引擎只有一些模糊的概念,因为之前做过天猫的springboot项目,其中就用到了ElasticSearch对商品的查询,对ElasticSearch有了一定的了解,这次整合心里还是有一定的把握的。

开始的时候参考的缓存和Shiro - ElasticSearch

后来发现自己对ElasticSearch理解的还是太少,准备系统的器学习一下,
通过再次学习一遍,才开始知道了ElasticSearch是基于Lucene进行了封装,提供了更为便利的访问和调用,ElasticSearch还有一个可视化分析工具Kibana ,关于具体的Kibana 学习笔记,我都记录在了这里:
[ElasticSearch-5]工具-KIBANA

里面详细记录了Kibana 对ElasticSearch的操作, 为什么要用Kibana呢,因为Kibana 里面有一个叫做 Dev Tools的,可以很方便地以Restful 风格向 ElasticSearch 服务器提交请求,简单又方便
学习完了Kibana的使用,我还要继续学习ElasticSearchAPI的使用,关于对接java这一块,我主要参考的这个视频:
ElasticSearch从入门到精通实战教程

学习完这个视频,我就开始整合自己的博客了,我想要在我的博客搜素位置加上搜素引擎,其实为什么要用搜素引擎,到底有什么好处呢,首先是增加了查询速度,那是怎末增加的速度呢,其实我感觉他就像是redis一样,首先将数据都从数据库读取出来,然后存入ElasticSearch ,当我们再次查询数据时,它会去ElasticSearch 中查看是否存在数据,如果存在数据,就将数据返回回来,如果不存在数据,就去数据库读取数据再存到ElasticSearch 中,和redis还是有些差别的,redis如果查询到就不需要读取service下面的代码,redis只需要一段注释就能解决,但是ElasticSearch 不一样,需要改service层代码,你需要对ElasticSearch 返回的数据进行分析。redis存储数据跟你所创建的对象没有直接关系,顶多就是序列化问题(通俗的就是字符串传入格式不合法),但是ElasticSearch 不一样,它跟对象有直接关系,根据对象创建索引,具体对应关系是:

数据库关系 项目关系 ElasticSearch关系
数据库 项目 索引
对象 文档
属性 文档键值对

还有主要使用ElasticSearch 的原因是它有一个IK分词器,这个分词器可以将一句话拆分成我们常用的短语句子,这样就可以实现模糊匹配的效果。还有我们可以使用ElasticSearch 进行查询高亮显示(这里是真的难,弄了好几天)。
关于实现简单的模糊匹配查询,我做的很快,但是这不是我要的效果,我想要的是查询结果高亮显示。
这里面踩了几个坑

  • 高亮显示直接写在创建search对象是不行的。需要进行数据分析
  • 进行数据分析时,遇到对象嵌套时,直接转换成json对象,再存入对象是不行的。这里需要对传回json字符串进行重组处理,重组成合法的字符串
  • 数据传回时,由于高亮显示,数据中会存在h5片段,但是到前台不翻译。如果使用的thymeleaf还是简单的,直接将text改为utext。

最后项目整合完毕。

下一步——》自己试着用nginx负载均衡再次改造

欢迎关注,点赞

项目源码我会分享出来。。。加油,哈撒给!!!!