微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ElasticSearch学习笔记一

1、 ElasticSearch介绍

Elaticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也可以使用Java开发并使用 Lucene 作为其核心来实现所有索引和搜索功能,但是它的目的是 通过简单的RESTful API来隐藏 Lucene 的复杂性,从而让全文搜索变得简单

2、 Elasticsearch相关概述

2.1 ElasticSearch与MysqL对应关系

Elasticsearch 是一种Nosql数据库(非关系型数据库),和常规的关系型数据库(比如:MysqL,Oralce等)的基本概念,对应关系如下:

Elasticsearch:index --> type --> doc --> field

MysqL: 数据库 --> 数据表 --> 行 --> 列

2.2 Elasticsearch核心概念

2.2.1 索引-index
一个索引就是一个拥有几分相似特征的文档的集合。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。

2.2.2 类型-type
一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。

注意:
此概念已在 ElasticSearch6、ElasticSearch7 中逐步去除(在 5.X 版本中,一个 index 下可以创建多个 type; 在 6.X 版本中,一个 index 下只能存在一个 type; 在 7.X 版本中,直接去除了 type 的概念,就是说 index 不再会有 type)。
为何要去除 type 的概念: 在 Elasticsearch 设计初期,是直接查考了关系型数据库的设计模式,存在了 type(数据表) 的概念。但是,其搜索引擎是基于 Lucene 的,这种 “基因” 决定了 type 是多余的。 Lucene 的全文检索功能之所以快,是因为 倒序索引 的存在。而这种 倒序索引生成是基于 index 的,而并非 type。多个 type 反而会减慢搜索的速度。为了保持 Elasticsearch “一切为了搜索” 的宗旨,适当的做些改变(去除 type)也是无可厚非的,也是值得的。

2.2.3 字段-Field
相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。

2.2.4 映射-mapping
mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、认值、分析器、是否被索引等等,这些都是映射里面可以设置的,其它就是处理es里面数据的一些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好。

2.2.5 文档 document
一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表示,而JSON是一个到处存在的互联网数据交互格式。
一个index/type里面,你可以存储任意多的文档。注意,尽管一个文档,物理上存在于一个索引之中,文档必须被索引/赋予一个索引的type。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐