【Elasticsearch 搜索之路】(一)什么是 Elasticsearch? (2)

定义不同的数据分布

{ "movies" : { "settings" : { "index" : { "creation_date" : "1570452552", "number_of_shards" : "5", "number_of_replicas" : "1", "uuid" : "pB0UsxjfQT2fW-s8Uy-Nsg", "version" : { "created" : "2030599" } } } } }

定义文档字段的类型

{ "movie": { "mappings": { "doc": { "properties": { "songName": { "type": "text" }, "singer": { "type": "text" }, "price": { "type": "integer" } } } } } }

索引有不同语义,在 ES 中指的是在集群中创建的索引(名词),也可以指的是文档到 ES 的过程(动词),即是一次倒排索引的过程。而在其他地方看到索引更多表示 B 树索引或者倒排索引。

文档( Document)

Elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位

日志文件中的日志项

一本电影的具体信息

一首歌的详细信息

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

JSON 对象由字段组成,

每个字段都有对应的字段类型(字符串/数值/布尔/日期/二进制/范围类型)

每个文档都有一个 Unique ID

可以自己指定 ID 或者通过 Elasticsearch 自动生成

案例

{ "songName" : "说好不哭", "singer" : "周杰伦", "price" : 3 }

文档的元数据

{ "_index" : "song", "_type" : "_doc", "_id" : "1", "_version" : 1, "found" : true, "_source" : { "songName" : "说好不哭", "singer" : "周杰伦", "price" : 3 } }

元数据,用于标注文档的相关信息

_index :文档所属的索引名

_type :文档所属的类型名

_id :文档唯一 Id

_source:文档的原始 JSON 数据

_all:整合所有字段内容到该字段,已被废除

_version:文档的版本信息

_score:相关性打分

类型(Type)

在 7.0 之前,一个 Index 可以设置多个 Types

6.0 开始, Type 已经被 Deprecated。7.0 开始一个索引,只能创建一个 Type -"_doc"。

5、RDBMS VS Elasticsearch

下面是 RDBMS 和 Elasticsearch 一个不是很恰当类比,Elasticsearch 集群可以包含多个索引 Indes(数据库),每一个索引可以包含一个doc类型 Type(表),每一个类型包含多个文档 Document(记录),然后每个文档包含多个字段 Fields(列),DSL 相当于 RDBMS 的 SQL。

RDBMS Elasticsearch
Schema   Mapping  
Table   Index(Type)  
Column   Filed  
Row   Document  
SQL   DSL  

6、小结

与传统 SQL 数据库管理系统(其花费10秒钟以上的时间来获取所需的搜索查询数据)相比,Elasticsearch 可以在10毫秒内完成此操作。由于 Elasticsearch 具有分布式架构,因此它可以扩展到数千个服务器并容纳PB级的数据。我们不必管理分布式设计的复杂性,因为 ES 已经自动完成。我们有多种方法可以为一些文档建立索引或查询它们,然而在使用 ES 下,我们可以轻松实现在海量数据快速检索全文,得到我们想要的结果。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpddsf.html