还会要先写一写elasticsearch的基本概念的理解吧。
基本概念
参照一些博客,想到那,写到哪。
Node
集群就是一个个Node组成的,上一篇介绍的有data node和master node的区分。一个节点就是一个elasticsearch实例。关注一下elasticsearch.yml的配置。
比如简答的transport.tcp.port配置,全局搜索你会看到这个参数是怎么注册的,自己写插件的时候,如果有另外的参数,也许需要进行参数注册。
另外一个关注点就是,参数注册的时候有一个关键点。Property.NodeScope,根据看具体的类型你就会发现还有一个叫IndexScope,这个配置就是在创建index的时候,配置在settings里面的,比如说index.refresh_interval,这些都是index级别的。
节点类型中还有一个就是node.ingest,主要负责业务转发。
调用接口就可以看到节点的类型,
curl 127.0.0.1:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1 3 41 5 mdi * JwNql9p
mdi对应的就是master,data,ingest
index
类比DB中的数据库吧。
curl 127.0.0.1:9200/test
{
"test": {
"aliases": {},
"mappings": {
"type1": {
"properties": {
"message": {
"type": "text"
},
"post_date": {
"type": "text"
},
"user": {
"type": "text"
}
}
}
},
"settings": {
"index": {
"creation_date": "1528639332574",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "BrtyOMb8QL2Z01hkgELbdA",
"version": {
"created": "5050199"
},
"provided_name": "test"
}
}
}
}
type
类比于数据库中的表
mappings
类比于数据库中的字段元数据定义。
curl 127.0.0.1:9200/test/_settings
{
"test": {
"settings": {
"index": {
"creation_date": "1528639332574",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "BrtyOMb8QL2Z01hkgELbdA",
"version": {
"created": "5050199"
},
"provided_name": "test"
}
}
}
}
shard
这里面可以类比于solr,solr的概念中都叫replica,只是在replica中分了主备。在elasticsearch里面,主就要shard,备叫replica,不管怎么叫吧,就是这个逻辑。
“index.number_of_shards” : 1 主节点只有一个,不同的shard存放不同的数据。
“index.number_of_replicas”:1 就代表主节点带有一个备份shard,主备存储的数据是一致的。最终的代码逻辑都是对应一个IndexShard。
curl 127.0.0.1:9200/_cat/shards?v
index shard prirep state docs store ip node
test 0 p STARTED 1 3.6kb 127.0.0.1 JwNql9p
test 0 r UNASSIGNED