elasticsearch学习笔记一:核心概念

1. NRT (Near Realtime): 近实时#

两方面:

  • 写入数据时,过一秒才会被搜索到,因为内部在分词,录入索引。(倒排索引)
  • es 搜索时:搜索和分析数据需要秒级出结果。

2.Cluster:集群#

包含一个或多个启动着 es 实例的机器群。通常一台机器起一个 es 实例。同一网络下,集名一样的多个 es 实例自动组成集群,自动均衡分片等行为。默认集群名为 “elasticsearch”

3.Node:节点#

每一个 es 实例称为一个节点。节点名自动分配,也可以手动分配。

4.Document:文档#

es 中的最小数据单位。一个 document 就像数据库中的一条记录。通常以 json 格式显示。多个 document 存储于一个索引 (Index) 中。

book document
{
    "book_id":"1",
    "book_name":"java编程思想",
    "book_desc":"java的基础从0到精通,从入门到放弃.......",
    "category_id":"1",
    "category_name":"java"
}

5.Index:索引#

包含一堆有相似结构的文档规则。(把它理解成数据库中的表就可以了)
索引创建规则:

  • 仅限小写字母
  • 不能包含 \ / ? “<> | #以及空格等特殊符号
  • 从 7.0 版本开始就不再包含冒号
  • 不能以 - _或 + 开头
  • 不能超过 255 个字节 (注意它是字节,因此多个字节符将计入 255 个限制)

6.Field:字段#

就像数据库中的列 (Columns),定义每个 document 应该有的字段。

7.Type:类型#

每个索引里都可以有一个或多个 type,type 是 index 中的一个逻辑数据分类,一个 type 下的 document,都有相同的 field。
注意:6.0 之前的版本有 type (类型) 概念,type 相当于关系 xing 数据库中的表,ES 官方将在 ES9.0 版本中彻底删除 type。此学习文档 type 都为_doc。

8.shard:分片#

index 数据过大时,将 index 里的数据,分为多个 shard,分布式存储在各个服务器上面。可以支持海量数据和高并发,提高性能和吞吐量,充分利用多台机器的 cpu。

9.replica:副本#

在分布式环境下,任何一台机器都有会有随时宕机的可能,如果宕机,index 的一个分片没有,导致此 index 不能搜索。所以为了确保数据的安全,我们会将每个 index 的分片进行备份,存储在另外的机器上,保证少数机器宕机后 es 集群仍可以搜索。
能正常提供查询和插入的分片我们叫做主分片 (primary shard),其余的我们管它叫做备份分片 (replica shard)。
es6 默认新建索引时,5 个分片,1 副本,也就是一主一备,共 10 个分片。所以 es 集群最小规模为两台。es7 1 分片 1 副本,一共 2 分片。

核心概念:elasticsearch 和数据库对比#

关系型数据库 (比如 MYSQL) 非关系型数据库 (elasticsearch)
数据库 Databas 索引 Index
表 Table 索引 Index (原为 Type)
数据行 Row 文档 Document
数据列 Column 字段 Field
约束 Schema 映射 Mapping
本作品采用《CC 协议》,转载必须注明作者和本文链接