- (Index)索引就像关系数据库中的“数据库”。它有一个定义多种类型的映射。
- (index)索引是一个逻辑命名空间,它映射到一个或多个主分片,并且可以有零个或多个副本分片。
- Index 的配置可以参考官方文档
- 这里只是说明比较重要的两个参数。
- “number_of_shards”: 分片数量
- “number_of_replicas”: 副本数量
-
ES里面的索引可能存储大量数据,这些数据可能会超出单个节点的硬件限制。
-
为了解决这个问题,ES提供了将索引细分为多个碎片的功能,这就是分片。这里咱们可以简单去理解,在创建索引时,只需要咱们定义所需的碎片数量就可以了,其实每个分片都可以看作是一个完全功能性和独立的索引,可以托管在集群中的任何节点上。
通过分片技术,咱们可以水平拆分数据量,同时它还支持跨碎片(可能在多个节点上)分布和并行操作,从而提高性能/吞吐量;
ES可以完全自动管理分片的分配和文档的聚合来完成搜索请求,并且对用户完全透明;
主分片数在索引创建时指定,后续只能通过Reindex修改,但是较麻烦,一般不进行修改。
为了实现高可用、遇到问题时实现分片的故障转移机制,ElasticSearch允许将索引分片的一个或多个复制成所谓的副本分片。
注意当分片或者节点发生故障时提供高可用性。因此,需要注意的是,副本分片永远不会分配到复制它的原始或主分片所在的节点上;
可以提高扩展搜索量和吞吐量,因为ES允许在所有副本上并行执行搜索;
默认情况下,ES中的每个索引都分配5个主分片,并为每个主分片分配1个副本分片。主分片在创建索引时指定,不能修改,副本分片可以修改。
这个时候默认是Dynamic mapping
PUT /colinrs_csdn_blog { "settings": { "number_of_shards": "1", "number_of_replicas": "0" } }查看索引
GET /colinrs_csdn_blog往索引插入数据,指定ID
POST /colinrs_csdn_blog/_doc/ { "id":1, "name":"colinrs_csdn_blog", "page":"https://blog.csdn.net/baidu_32452525", "say":"Hello,World" }往索引插入数据,不指定ID
POST /colinrs_csdn_blog/_doc/1 { "id":1, "name":"colinrs_csdn_blog", "page":"https://blog.csdn.net/baidu_32452525", "say":"Hello,World" }获取到索引数据
GET /colinrs_csdn_blog/_doc/1搜索索引数据
GET /colinrs_csdn_blog/_search按照条件搜索索引数据
POST /colinrs_csdn_blog/_search { "query": { "match_all": {} }, "sort": [ { "id": { "order": "asc" } } ] }全局更新索引数据
PUT /colinrs_csdn_blog/_doc/1 { "id":1, "name":"colinrs_csdn_blog_1", "page":"https://blog.csdn.net/baidu_32452525", "say":"Hello,World" }局部更新索引数据
POST /colinrs_csdn_blog/_update/1 { "doc":{ "name":"colinrs_csdn_blog_16" } }删除索引数据
POST /colinrs_csdn_blog/_delete_by_query { "query":{ "match":{ "name":"colinrs_csdn_blog" } } }删除一个索引
DELETE /colinrs_csdn_blogMapping
Index 只是类似一个数据库,数据里面还需要字段的定义,这个时候我们就需要使用到 Mapping,Mapping 就是类似数据库字段里面的定义
它有以下几个作用:
- 定义索引中的字段的名称
- 定义字段的数据类型,比如字符串、数字、布尔
- 字段,倒排索引的相关配置,比如设置某个字段为不被索引、记录 position 等
Mapping
支持的数据类型:见文档:一文搞懂 Elasticsearch 之 Mapping
定义一个Mapping 创建Index 的时候指定 mappingPUT /my-index-000001 { "mappings": { "properties": { "age": { "type": "integer" }, "email": { "type": "keyword" }, "name": { "type": "text" } } } }
参考
- 最清晰易懂的Elasticsearch操作手册|收藏夹必备