ElasticSearch 学习——简介
Elasticsearch 是一款非常强大的、基于 Lucene 的开源搜索及分析引擎;它是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。
本文的学习目标如下:
- 了解 Elasticsearch 的组成。
- 了解 Elasticsearch 的用途。
- 了解 Elasticsearch 的基础概念。
Elasticsearch 的组成
Elasticsearch 是基于 Lucene 的。
Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库。
但是 Lucene 仅仅只是一个库。为了充分发挥其功能,开发者需要使用 Java 并将 Lucene 直接集成到应用程序中。同时,Lucene 的原理非常复杂,学习成本较高。
Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。
然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。它可以被下面这样准确的形容:
- 一个分布式的实时文档存储,每个字段可以被索引与搜索
- 一个分布式实时分析搜索引擎
- 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据
Elasticsearch 的用途
Elasticsearch 被用作全文检索、结构化搜索、分析以及这三个功能的组合。
具体使用场景如,GitHub 使用 Elasticsearch 对 1300 亿行代码进行查询,Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索。
除了搜索外,Elasticsearch 还可以做日志管理与分析、安全指标监控、应用性能监控、Web 抓取舆情分析等。
Elasticsearch 的基础概念
- Near Realtime(NRT) 近实时。数据提交索引后,立马就可以搜索到。
- Cluster 集群,一个集群由一个唯一的名字标识,默认为“elasticsearch”。集群名称非常重要,具有相同集群名的节点才会组成一个集群。集群名称可以在配置文件中- 指定。
- Node 节点:存储集群的数据,参与集群的索引和搜索功能。像集群有名字,节点也有自己的名称,默认在启动时会以一个随机的UUID的前七个字符作为节点的名字,你可以为其指定任意的名字。通过集群名在网络中发现同伴组成集群。一个节点也可是集群。
- Index 索引: 一个索引是一个文档的集合(等同于solr中的集合)。每个索引有唯一的名字,通过这个名字来操作它。一个集群中可以有任意多个索引。
- Type 类型:指在一个索引中,可以索引不同类型的文档,如用户数据、博客数据。从6.0.0 版本起已废弃,一个索引中只存放一类数据。
- Document 文档:被索引的一条数据,索引的基本信息单元,以JSON格式来表示。
- Shard 分片:在创建一个索引时可以指定分成多少个分片来存储。每个分片本身也是一个功能完善且独立的“索引”,可以被放置在集群的任意节点上。
- Replication 备份: 一个分片可以有多个备份(副本)
Elasticsearch 的基础实验
Elasticsearch 和 Kibana。
总结
本节课了解到 Elasticsearch 是一个强大的基于 Lucene 的搜索及分析引擎。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LuoRongLuoRong!
评论