2 Elasticsearch的核心概念

1、lucene和elasticsearch对比

lucene,功能强大的搜索库。如果直接基于lucene开发,非常复杂,api复杂,需要深入理解原理(各种索引结构)

elasticsearch,基于lucene,隐藏复杂性,提供简单易用的restful api接口、java api接口
(1)分布式的文档存储引擎
(2)分布式的搜索引擎和分析引擎
(3)支持PB级数据

2、elasticsearch的核心概念

(1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级

(2)Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置来决定的
(3)Node:节点,集群中的一个节点,默认节点会去加入一个名称为“elasticsearch”的集群,多个节点组成一个集群,最简单的集群可以只包含一个节点。

(4)Document&field:文档,es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示。一个document里面有多个field,每个field就是一个数据字段。

product document

{
  "product_id": "1",
  "product_name": "华为手机",
  "product_desc": "华为手机p30",
  "category_id": "2",
  "category_name": "手机"
}

(5)Index:索引,包含一堆有相似结构的文档数据。一个index包含很多document。
(6)Type:type是index中的一个逻辑数据分类.5.x以前的multiple types还可以正常工作,但是6.x里面新创建的index只允许一个type了,从7.0开始将强制只有一个type(_doc),8.0开始移除type。

移除type的原因: Elasticsearch 设计初期,是直接查考了关系型数据库的设计模式,存在了 type(数据表)的概念。但是,其搜索引擎是基于 Lucene 的,这种 “基因”决定了 type 是多余的。 Lucene 的全文检索功能之所以快,是因为 倒序索引 的存在。而这种 倒序索引 的生成是基于 index 的,而并非 type。多个type 反而会减慢搜索的速度。为了保持 Elasticsearch “一切为了搜索” 的宗旨,适当的做些改变(去除 type)也是无可厚非的,也是值得的。

(7)shard:单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene实例。
(8)replica:任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。primary shard(建立索引时一次设置,不能修改),replica shard数量可以修改。

ES 7.0 是 2019 年 4 月份发布的,底层是 Lucene 8.0。其他还有需要了解的是:

  • 废除单个索引下多 Type 的支持
  • ES Security 免费使用
  • ECK - ES Operator on K8s
  • 新功能:New Cluster coordination
  • 新功能:完整的 High Level REST Client
  • 新功能:Script Score Query
  • 性能:默认 Primary Shard 数从 5 到 1 ,避免 Over Sharding;性能优化更快的 Top K

3、elasticsearch核心概念 vs. 数据库核心概念

Elasticsearch            数据库

Document                   行
Type                           表
Index                          库


{
  "_index": "test_index",
  "_type": "_doc",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "test_content": "test test"
  }
}

_index元数据

(1)代表一个document存放在哪个index中
(2)index中包含了很多类似的document。
(3)索引名称必须是小写的,不能用下划线开头,不能包含逗号:product,website,blog

_id元数据

(1)代表document的唯一标识,与index一起,可以唯一标识和定位一个document
(2)我们可以手动指定document的id,也可以不指定,由es自动为我们创建一个id

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值