Elasticsearch入门核心概念详解
@Document(indexName = "item",type = "docs", shards = 1, replicas = 0)public class Item {
[@Id](https://my.oschina.net/u/3451001)
private Long id;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String title;
@Field(type = FieldType.Keyword)
private String category;
}
核心概念
1. document(文档)
es 中的最小数据单元,一个 document 可以是一条商品数据,也可以是一条订单数据,通常用 JSON 格式表示,一个 document 里面有多个 field,每个 field 就是一个数据字段。
以下是一个商品 document:
{ "id": "1",
"name": "Macbook pro 2018",
"desc": "2018年新款 配置: xxxxxxx",
"category_id": "2",
}
2. index(索引)
包含一堆有相似结构的文档数据,比如一个商品分类索引,订单索引,索引有一个名称。一个 index 包含很多 document,一个 index 就代表了一类类似的或者相同的 document。比如说建立一个商品 index,里面可能就存放了所有的商品数据,所有的商品 document。
3. type(类型)
每个索引里都可以有一个或多个 type,type 是 index 中的一个逻辑数据分类,一个 type 下的 document,都有部分相同的 field。
比如:商品index,里面存放了所有的商品document,
而商品分很多种类,每个种类的document的 field 可能不太一样,比如说电器商品,可能会包含如售后时间;生鲜类商品包含保质期这样的的field
举例说明:
一个商品 index,包含电器商品type 和 生鲜商品type
每一个type里面,都会包含一堆 document
{ "id": "2",
"name": "长虹电视机",
"desc": "4k高清",
"category_id": "3",
"service_period": "1年"// 特殊 field
}
{
"id": "3",
"name": "基围虾",
"desc": "纯天然,冰岛产",
"category_id": "4",
"eat_period": "7天" // 特殊 field
}
4. cluster(集群)及 node(节点)
一个集群包含多个节点,每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的。
节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群
5. shard
单台机器无法存储大量数据,es 可以将一个索引中的数据切分为多个 shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据,让搜索和分析等操作分布到多台服务器上去执行,提升吞吐量和性能。每个shard都是一个lucene index。
6. replica
任何一个服务器随时可能故障或宕机,此时shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失,多个replica还可以提升搜索操作的吞吐量和性能。
注意:
primary shard(建立索引时一次设置,不能修改,默认5个)
replica shard(随时修改数量,默认1个)
默认每个索引10个shard,5个primary shard,5个replica shard,最小的高可用配置,是2台服务器。
总结
当我们熟悉并了解 Elasticsearch 的核心概念后,再来看下面的代码,就能看懂 90% 左右了。
@Document(indexName = "item",type = "docs", shards = 1, replicas = 0)public class Item {
@Id
private Long id;
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String title;
@Field(type = FieldType.Keyword)
private String category;
}
以上是 Elasticsearch入门核心概念详解 的全部内容, 来源链接: utcz.com/z/513033.html