存储格式
_index:文档所在索引名称
_type:文档所在类型名称
_id:文档唯一id
_uid:组合id,由_type和_id组成(6.x后,_type不再起作用,同_id)
_source:文档的原始Json数据,包括每个字段的内容
_all:将所有字段内容整合起来,默认禁用(用于对所有字段内容检索)
名字解释
索引 index
类比传统中的数据库,不同业务的检索通过索引名 索引名必须是全小写字母,es 可以把索引数据存放到另一台服务器上,也可以sharding后存放多台服务器上,每一个索引有一个或多个分片,每个分片可以有多个副本
类型 type
Es6之后,一个index中只能有一个type
在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型
类比数据库中的表,后期高版本会去除
字段Field
相当于是数据表的字段,对文档数据根据不同属性进行的分类标识
document
一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表示,而JSON是一个到处存在的互联网数据交互格式。在一个index/type里面,你可以存储任意多的文档。注意,尽管一个文档,物理上存在于一个索引之中,文档必须被索引/赋予一个索引的type。
found
是否被找到
_source
存储的字段
映射(mapping)
Mapping,就是对索引库中索引的字段名及其数据类型进行定义。
ES默认是动态创建索引和索引类型的mapping的。这就相当于无需定义Solr中的Schema,无需指定各个字段的索引规则就可以索引文件,很方便。但有时方便就代表着不灵活。比如,ES默认一个字段是要做分词的,但我们有时要搜索匹配整个字段却不行。如有统计工作要记录每个城市出现的次数。对于NAME字段,若记录“new york”文本,ES可能会把它拆分成“new”和“york”这两个词,分别计算这个两个单词的次数,而不是我们期望的“new york”。
这时,就需要我们在创建索引时定义mapping。此外,es支持多字段结构,例如:我们希望两个字段中有相同的值,一个用于搜索,一个用户排序;或者一个用于分词器分析,一个用于空白字符。
数据概念
分片
一个分片本身就是一个完整的搜索引擎。文档存储在分片中,而分片则会被分配到集群中节点中,随着集群的扩大和缩小,es会自动地将分片在节点之间进行迁移,以保证集群能保持一种平衡。
1.如果我们的索引数据量很大,超过硬件存放单个文件的限制,就会影响查询请求的速度。Es引入了分片技术;
2.将一个完整的index分成若干部分存储在相同或不同的节点上。
3. 每个分片都有自己搜索,更新,删除等和index一样全部功能的一小块。
4.好处:水平分割和扩展我们存放的内容索引;分发和并行跨碎片操作提高性能/吞吐量;
5.假设索引为firsttime,在elasticsearch-xx/data/elasticsearch/0/indices/firsttime下有5个分片,从0-4
副本:replica
1.冗余备份,防止数据丢失;
2.负载均衡