ElasticSearch创建索引详解(语法命令创建示例)

ElasticSearch创建索引详解(语法命令创建示例)-mikechen

ElasticSearch索引简介

ElasticSearch索引是ElasticSearch的一个逻辑存储,可以理解为关系型数据库中的数据库。

 

Elasticsearch创建索引语法

在Elasticsearch中创建索引,就相当于在关系型数据库中创建数据库,可以通过 Elasticsearch 的 RESTFul API 来创建索引。

语法格式如下:

PUT http://<ip>:<port>/<索引> + 索引配置
  1. PUT 请求:表示在服务器上创建对象,相当于SQL的Create命令;
  2. IP和端口号:就是ElasticSearch服务器和端口;
  3. 索引:需要创建的索引名字,相当于MySQL的表;
  4. 索引配置:是向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创建索引详解(语法命令创建示例)-mikechen

分片

单台机器无法存储大量数据,为了支持更大量的数据,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年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法