基本概念对比
关系型数据库,像最常见的 Mysql , SqlServer 都是属于关系型数据库,关系型数据中有这几种概念:数据库、表、行、列、Schema,还有 SQL 查询语句。
以学生数据库为例,回忆一下数据库过程:
建学生数据库
见一个学生表
配置学生字段,如名称 varchar、性别 char 等
一行代表一个学生,不同的列代表这个学生不同的属性
ES 也与关系型数据库如出一辙,只是叫法不同,在 ES 中建一个学生数据库步骤如下:
在 ES 中启动一个 ES 实例,这个实例就相当于数据库,表在 ES 中被称为索引 Index,行称为文档 Document,列称为字段 Field ,Schema 被称为 Mapping ,数据库中查询语句 SQL 在 ES 中有相应的 DSL 查询语句。
因此建学生索引:
配置 ES,启动一个 ES 实例
新建一个学生索引
不需要配置字段属性,ES 会自动识别
一个 JSON 字符串代表一个学生,JSON 字符串中有学生属性字段 Field
具体对应关系如下表:
RDBMS
ES
Table
Index(Type)
Row
Document
Column
Field
Schema
Mapping
SQL
DSL
创建 Table/Index 对比
传统数据创建方式如下,使用简单的 SQL 语句就能够轻松创建,但是前提是要定义好表结构以及数据类型。
CREATE TABLE Student(
name varchar(20),
sex char(2),
age int
);
ES 基于 Http 协议的,增删改查的接口都基于 Http ,因此它需要使用 ES 的 Rest API 才能够创建,只需要将 JSON 格式的学生数据利用 Rest API PUT 给 ES 即可自动创建,并且可以选择性的更改 ES 自动创建好的数据字段的类型 ,后面的课时中有详细的介绍如何对 ES 进行增删改查。
下面的这个语法,是基于 ES 的可视化界面 Kibana 来做的,使用 PUT 的方式,索引是 student,操作是 _create 创建。这样的话就会自动创建好索引,以及数据字段的类型,比如 name 是 text 类型,age 是 数字类型。
PUT student/_create/1
{
"name":"xiaoming",
"sex":"male",
"age":18
}
Row/Document 对比