elasticsearch源码分析——基本概念

还会要先写一写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

你可能感兴趣的:(elasticsearch)