理解elasticsearch

思考:如果我们要做一个通过关键词搜索文章的功能,需要搜索哪些字段,以及使用什么技术方案呢?

搜索字段:

  1. 标题

  2. 内容

  3. 作者

技术方案:

  1. mysql的模糊查询 %like%

    1. 优点:实现起来简单

    2. 缺点:数据量比较大的情况下,查询效率极低

  2. 全文检索引擎

    1. 优点:专业的全文检索引擎,效率高

    2. 缺点:实现起来比较复杂

选择使用过全文检索引擎。自行实现django框架和全文检索引擎的代码比较麻烦,抱着不重复造轮子的原则,这里我们选用django的第三方包djangohaystack

它支持多种全文检索引擎,本项目选择最流行的全文检索引擎之一elasticsearch

elasticsearch介绍文章参考:https://developer.51cto.com/art/201904/594615.htm

感谢 channingbreeze 的分享

要点整理:

  • 反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。
  • 搜索引擎原理就是建立反向索引。
  • Elasticsearch 在 Lucene 的基础上进行封装,实现了分布式搜索引擎。
  • Elasticsearch 中的索引、类型和文档的概念比较重要,类似于 MySQL 中的数据库、表和行。
  • Elasticsearch 也是 Master-slave 架构,也实现了数据的分片和备份。
  • Elasticsearch 一个典型应用就是 ELK 日志分析系统。
原文地址:https://www.cnblogs.com/zhanghaibin16/p/12272140.html