ElasticSearch索引简介
ElasticSearch索引是ElasticSearch的一个逻辑存储,可以理解为关系型数据库中的数据库。
Elasticsearch创建索引语法
在Elasticsearch中创建索引,就相当于在关系型数据库中创建数据库,可以通过 Elasticsearch 的 RESTFul API 来创建索引。
语法格式如下:
PUT http://<ip>:<port>/<索引> + 索引配置
- PUT 请求:表示在服务器上创建对象,相当于SQL的Create命令;
- IP和端口号:就是ElasticSearch服务器和端口;
- 索引:需要创建的索引名字,相当于MySQL的表;
- 索引配置:是向ElasticSearch服务器传递的请求负载的主体,数据格式是json,用于定义索引的配置信息:映射节(mappings)和配置节(settings)。
ElasticSearch创建索引示例
比如:我要创建一个商品的索引,就类似MySQL数据库的商品数据库。
示例:
PUT http://localhost:9200/goods
表示需要创建googs商品的索引,相当于MySQL的商品库。
当然,你也可以在创建索引的时候,同时将索引的类型、以及映射一并创建好。
入参:
"mapping": { "_doc": { "properties": { "goods_id": { "type": "long" }, "goods_name": { "type": "text" }, "picture_url": { "type": "keyword" }, "price": { "type": "double" } } }
定义了一个 _doc 的类型,里面包含了 4 个字段,就与MySQL的表的字段类似。
索引创建成功,会返回以下参数:
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "goods" }
备注:Elasticsearch中的索引不能使用大写字母。
默认情况下,创建的索引分片数量是 5 个,副本数量是 1 个。
如下图所示:
分片
单台机器无法存储大量数据,为了支持更大量的数据,ElasticSearch可以将一个索引中的数据切分为多个分片。
ElasticSearch的分片机制:将一个索引内部的数据分布地存储于多个节点。
分片有两种:
- 主分片(Primary Shard);
- 副本分片(Replica Shard);
副本
副本就是对分片的 Copy,每个主分片都有一个或多个副本分片,当主分片异常时,副本可以提供数据的查询等操作,保证数据不丢失。
你可以通过如下参数来指定分片数和副本数量:
{ "settings": { "number_of_shards": 3, "number_of_replicas": 2 } }
ElasticSearch查询索引
新建好了索引,可以通过如下查看索引:
GET http://localhost:9200/goods
向ElasticSearch服务器发送 GET请求:
localhost:9200/goods
表示查询名为“goods”的索引信息。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》