1.Near Realtime(NRT):
近实时,两层含义,
1.从写入数据到数据可以被搜索到有一个小延迟(大概1秒)
2.基于es执行搜索和分析可以达到秒级
2.Cluster:
集群:包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的,
对于中小型应用来说,刚开始一个集群就一个节点很正常
3.Node:
节点:集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名
称很重要(在执行运维管理操作的时候)默认节点会去加入一个名elasticsearch
集群,当然一个节点也可以组成一个elasticsearch集群
4.shart:
单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了
shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每
个shard都是一个lucene index。
5.replica:
任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。
replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。
primary shard(建立索引时一次设置,不能修改,默认5个)简称 shard,
replica shard(随时修改数量,默认1个)简称replica,
默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。
6.elasticsearch核心概念 vs. 数据库核心概念
Elasticsearch | 关系型数据库 |
---|---|
Document | 行 |
Type | 表 |
Index | 库 |
7.Index:
索引:包含一堆有相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,
一个index包含很多document,一个index就代表了一类类似的或者相同的document。
比如说建立一个product index,商品索引,里面可能就存放了所有的商品数据,所有的商品document。
8.Type:
类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分
类,一个type下的document,都有相同的field,比如博客系统,有一个索引,
可以定义用户数据type,博客数据type,评论数据type。
9.Document&file:
文档:es中的最小数据单元,一个document可以是一条客户数据,一条商品分
类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都
可以去存储多个document。一个document里面有多个field,每个field就是一个
数据字段
这个就是一个Document
{
"_index": "test_index",
"_type": "test_type",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"aa": "bb", // key:value 字段名:值
"bb": "cc",
"cc": "dd"
}
}
10.正向索引
每个文件都对应一个文件ID,文件内容被拆分为多个关键字。实际上在搜索引擎索引库中,关键词也已经转换
为关键词ID。这样的数据结构就称为正向索引。总之就是一个Document 对应着多个关键字,为每个关键字建立 索引,
11.倒排索引
一个关键词对应着多个Document
12.全文检索
通过倒排索引对数据进行检索的过程就是全文检索
13.什么是 Lucene
Lucene是一个全文搜索框架,就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包
括各种算法
用lucene,我们就可以去将已有的数据建立索引,lucene会在本地磁盘上面,给我们组织索引的数据结构。另外
的话,我们也可以用lucene提供的一些功能和api来针对磁盘上数据进行操作