Lucene是什么?

Lucene 是一个开源、免费、高性能、纯 Java 编写的全文检索引擎,可以算作是开源领域最好的全文检索工具包。
在实际开发中,Lucene 几乎适用于任何需要全文检索的场景,所以 Lucene 先后发展出好多语言版本,例如 C++、C#、Python 等。
早在 2005 年,Lucene 就升级为 Apache 顶级开源项目。它的作者是 Doug Cutting,有的人可能没听过这这个人,不过你肯定听过他的另一个大名鼎鼎的作品 Hadoop。
不过需要注意的是,Lucene 只是一个工具包,并非一个完整的搜索引擎,开发者可以基于 Lucene 来开发完整的搜索引擎。比较著名的有 Solr、ElasticSearch,不过在分布式和大数据环境下,ElasticSearch 更胜一筹。
Lucene 主要有如下特点:

  • 简单
  • 跨语言
  • 强大的搜索引擎
  • 索引速度快
  • 索引文件兼容不同平台

Elastic Search是什么?

lasticSearch 是一个分布式、可扩展、近实时性的高性能搜索与数据分析引擎。ElasticSearch 基于 Java 编写,通过进一步封装 Lucene,将搜索的复杂性屏蔽起来,开发者只需要一套简单的 RESTful API 就可以操作全文检索。
ElasticSearch 在分布式环境下表现优异,这也是它比较受欢迎的原因之一。它支持 PB 级别的结构化或非结构化海量数据处理
整体上来说,ElasticSearch 有三大功能:

  • 数据搜集
  • 数据分析
  • 数据存储

ElasticSearch 的主要特点:

  1. 分布式文件存储。
  2. 实时分析的分布式搜索引擎。
  3. 高可拓展性。
  4. 可插拔的插件支持。

Es小总结

学完石杉老师的前30讲课程,从新来归纳一下es的概念。
Elastic search在运行后,就是一个分布式的文档数据存储系统。
文档数据:es可以操作和存储json文档类型的数据。
存储系统:es可以对json文档类型的数据进行新增,删除,修改,查询等操作。

我们在操作着各种文档时,就可以将es看做是一个NoSQL存储引擎,一个存储文档类型数据的存储系统,操作里面的document。

es适合于开发什么样的应用程序呢?

  1. 数据量较大—es的本质是分布式的,可以帮助系统快速扩容,承载大量数据
  2. 数据结构灵活多变,而且数据之间的关系非常复杂
  3. 对数据的操作比较简单,也就是一些增删查改
  4. NoSQL数据库适用的也是上述类似的场景

例如:一些网站,一些电商系统。面向对象概念比较复杂,但是作为终端网站来说,没什么太复杂的功能,就是一些简单的CRUD操作,而且数据量可能还比较大。这个时候选用ES这种NoSQL型的数据存储,比传统的复杂的功能务必强大的支持SQL的关系型数据库,更加合适一些。无论是性能,还是吞吐量,可能都会更好。