本篇内容主要讲解“elasticsearch的基础知识有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“elasticsearch的基础知识有哪些”吧!
定义
-
Cluster: 集群,由一个或多个节点组成
-
Node: 单个 Elastic 实例
-
Index: 索引,复数是 Indices,是一组文档的集合
-
Shard: 分片,es 是个分布式的搜索引擎,索引通常都会被分解成不同部分,而这些分布在不同节点上的数据就是分片,
-
replica: 副本,ES 默认为每个索引创建 5 个主分片,并分别为其创建一个副本分片
-
Type: 类型,ES7 已经弃用,默认一个索引只有一个默认 Type,即
_doc
-
Document: 文档,json 类型
与 Mysql 类比
-
Index 对应 Database
-
Type 对应 Table
-
Document 对应 表里每一条记录
ES7.0 Type 被废弃
-
从 ES7.0 版本起,废弃 Type,一个 index 只有一个默认 type,即
_doc
-
ES 废弃 Type 后,库表合一
与 Mysql 类比
-
ES 实例 对应 Database
-
Index 对应 Table
-
Document 对应 表里的每一条记录
文档唯一性
一般讲 index + type + 文档 _id
在一个实例或集群全局唯一, 实际上是 index + type + 分片标识 + 文档 _id
数据类型
见官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/7.2/mapping-types.html
字符串类型
-
ES5.0 之前,字符串是 string
-
从 ES5.0 起,string 类型被废弃,引入 keyword, text 两种类型
-
keyword 不支持全文搜索,只能使用精准匹配,最长长度 32766 字节(utf8 中,英文字母是 1 字节,中文是 3 字节,表情符合是 4 字节)
-
text 支持全文搜索,无限制长度
数组
-
正常 json 数组,[]
-
查询时,命中数组中的其中一个,就会认为符合条件
mapping 和 settings 结构
ES7
{ "mappings" : { "properties" : { "name" : { // 属性名 "type" : "keyword" // 属性类型 } } }, "settings" : { "index" : { "number_of_shards" : 1, // 分片数 "number_of_replicas" : 2 // 副本数 } } }
ES6
{ "mappings" : { "student": { // 自定义type "properties" : { "name" : { // 属性名 "type" : "keyword" // 属性类型 } } } }, "settings" : { "index" : { "number_of_shards" : 1, // 分片数 "number_of_replicas" : 2 // 副本数 } } }
问题
创建索引时,必须指定 mapping 和 settings 吗?
不是,有以下几种行为:
-
ES7 中在创建索引时,指定 mapping
-
ES7 中在创建索引时,指定 mapping 和 settings
-
ES7 中先创建索引,后指定 mapping
-
ES6 中在创建索引时,指定 mapping 和 settings
设置索引副本数量和分片数量是为了什么?
-
每个节点的分片数量保持在低于每 1GB 堆内存对应集群的分片在 20-25 之间。
-
分片大小为 50GB 通常被界定为适用于各种用例的限制。
到此,相信大家对“elasticsearch的基础知识有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/225652.html