ElasticSearch学习笔记(3)——基础概念

时间:2022-07-24
本文章向大家介绍ElasticSearch学习笔记(3)——基础概念,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  1. 集群与节点 Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。 单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。 每个集群必须指定一个名字,默认是’elasticsearch’。节点通过集群名来发现和加入一个集群。 集群中的每个几点都可以独立运行并保存数据。
  2. 索引(Index) 索引是含有相同属性的文档集合。类似SQL中的数据库。 ES 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。 下面的命令可以查看当前节点的所有 Index:
curl -X GET 'http://localhost:9200/_cat/indices?v'

3.文档(Document) Index 里面单条的记录称为 Document(文档),是ElasticSearch中最小的存储单元。类似SQL中的一行记录。 许多条 Document 构成了一个 Index。Document 使用 JSON 格式表示。 4. 类型(Type) 索引可以定义一个或多个类型,文档必须属于一个类型。 类型可以理解为SQL中的表。 Document 可以分组,比如weather这个 Index 里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天)。这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。 不同的 Type 应该有相似的结构(schema),举例来说,id字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如products和logs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。 下面的命令可以列出每个 Index 所包含的 Type:

curl 'localhost:9200/_mapping?pretty=true'

根据规划,Elastic 6.x 版只允许每个 Index 包含一个 Type,7.x 版将会彻底移除 Type。

5.分片:每个索引都有多个分片,每个分片都是一个Lucene索引。 分片可以分摊一个较大索引的压力,也可以进行水平的扩展和拆分,以及分布式的操作,提高操作效率。 6. 备份:拷贝一份分片,就完成了分片的备份。 当主分片宕掉时,备份的分片可以代替主分片进行工作,从而提高ES的高可用性。此外,备份的分片还可以执行搜索操作,以分摊索引的压力。 ES在创建索引时,默认创建5个分片和1个备份,可以通过配置修改。此外,分片的数量只能在创建索引之前指定,无法进行动态修改,而备份数量可以动态修改。