1,基础概念
1)由Java开发,基于Restful Web接口,分布式的多用户,可扩展,高可用的全文搜索和分析引擎。
store, search, and analyze big volumes of data
eg:收集日志,分析日志;收集、分析交易数据;存储数据库大表到es,用于检索和聚合。
2)基本概念。
---Near Realtime NRT近实时,从索引文档到该文档可被查找,通常在1s内。
---Cluster 集群,共享同一个cluster name的node(server)集合,集群保存了所有的数据,并在各节点之上提供索引和搜索功能。一个节点只能属于一个集群
查看集群的健康状态curl 172.17.6.11:9200/_cluster/health?pretty
查看具体索引的健康状态curl 172.17.6.11:9200/_cluster/health/dby_course_info?pretty
---Node 节点,一个启动时分配uuid的server。存储数据,参与集群的索引和查找。每个节点都能使用http和客户端通信,使用tcp和内部节点通信
---Index 索引,有相同特点的documents的集合。名称必须小写
,通过name标识,来操作(索引,查找,更新,删除
)index内的document。(相当于db)
---Type 类型,一个Index可以拥有多个type,可以定义为拥有共同字段(field)的文档集合。(相当于table)
---Document 文档,使用JSON描述的,可以被索引的基本信息单元。(相当于记录)
---Field域,
3)Shard分片和Replica副本。
---目的:水平拆分和扩展容量;支持在多个分片之间并发和并行操作,提高吞吐量。
创建索引时可以指定number_of_shards
主分片的数量,默认为5个(一个分片的容量可达到20亿条文档
)。
---Replica 副本,是一个index所有shards的拷贝,创建索引时可以指定number_of_replicas
副本的数量,默认为1。(5个primary shard, 5个replica shard)。
---replicas机制是索引级别的,可以动态修改replicas副本的数量,但是不能修改分片的个数。
---目的:解决node/shard宕掉之后的高可用;提高查询的并发,可以并行在所有副本上执行查找。
2,Mapping映射(相当于表结构)
1)一个Index可以有多个Mapping type,每个document都属于一个Type类型,每个Type都有自己的Mapping映射,存储field type和field信息。
dynamic mapping 规则,可以不定义直接使用mapping。
2)查看type对应的mapping映射curl 172.17.6.11:9200/dby_course_info/_mapping/course_info?pretty
。查看index中type对应的mapping。
3)mapping还可以设置关联到type类型上的元数据,Meta-fields元数据字段,以下划线开头,eg: _index, _type, _id, and _source fields.
properties属性(fields)。
{
"properties": {
"roomId": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
4)创建mapping。
3,template模板
1)查看模板。
curl 172.17.6.11:9200/_template/dby_template?pretty
"template" : "dby_*" : 声明模板对那些index有效。
2)模板包括setting和mapping。对于所有te开头的index都生效。
当创建一个新的索引,以te开头时,匹配成功后会按照settings和mappings创建一个新的索引。
{
"template": "te*",
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"type1": {
"_source": {
"enabled": false
}
}
}
}