ES 基本概念

1. 对比

关系型数据库[比如MySQL] 非关系型数据库
数据库 Datasheet 索引Index
表Table 类型Type
数据行Row 文档Document
数据列 字段Field
SQL DSL
表结构schema 映射mapping

文档(Document) ES面向文档,文档是所有可搜索数据的最小单元。

理解成关系新数据库中的一条数据。

文档会被序列化成JSON格式,保存在ES中:

JSON对象有字段组成,每个字段都有对应的字段类型(字符串/数值/日期...)。

每个文档都会有一个UniquID:

可以自己指定也可以由ES自动生成~

文档的元数据

{  # 元数据,用于标准文档的相关信息
  "_index": "accounts",   # 文档所属的索引名
  "_type": "person",      # 文档所属的类型名
  "_id": "1",             # 文档唯一id
  "_version": 8,          # 文档版本信息
  "found": true,
  "_source": {            # 文档的原始json数据
    "name": "caimengzhi", # 相关字段
    "sex": "male",
    "job": "SA and Linux"
  }
}

2. 术语

  • 索引(index): 索引是具有相同结构的文档的集合。 类比关系型数据库中的:数据库。

  • 类型(type): 在索引中,可以创建一个或多个类型,类型是索引的逻辑分区。 类比关系型数据库中的:表

  • 文档(document): 文档是存储在es中一个一个JSON格式字符串。 类比关系型数据库中的:一行数据

  • 字段(field): 类比关系型数据库中的:列

Logstash

  • 来源字段(source field): 默认情况下会将原文档存储在_source字段中。

  • 复制(replica): 高可用,解决单点问题。(默认2个副本)

  • 分片(shard): 每个索引都有多个分片,每个分片是一个Lucene索引。用来水平分割扩展数据(默认5个分片)

主分片(primary shard): 每个文档都存储在一个分片中,当你存储一个文档时,系统会先存储在主分片中,然后复制到不同的副本中。
副本分片(replica shard): 每一个分片有0或多个副本,它是主分片的复制.

Logstash

3. Rest API

RESTful 接口 URL 的格式是:

http://cluster的地址: 9200/<index>I<type>I [<id>]
  • 其中,index, type 是必须提供的( index 可以理解为数据库;type 理解为数据表)
  • id 是可选的(相当于数据库表中记 录的主键是唯一的。如果不提供, Elasticsearch 会向动生成。
  • 增 、删、改,查分别对应 HTTP 请求的 PUT 、DELETE、POST、GET方法。