ElasticSearch(三)ElasticSearch索引操作

ElasticSearch(三)ElasticSearch索引操作

作者:lomtom

个人网站:lomtom.cn

个人公众号:博思奥园

你的支持就是我最大的动力。

ES系列:

  1. ElasticSearch(一) ElasticSearch入门
  2. ElasticSearch(二)在ElasticSearch 中使用中文分词器
  3. ElasticSearch(三)ElasticSearch索引操作
  4. ElasticSearch(四)ElasticSearch文档操作
  5. ElasticSearch(五)ElasticSearch字段类型

往 Elasticsearch 添加数据时需要用到 索引 —— 保存相关数据的地方。
索引实际上是指向一个或者多个物理 分片 的 逻辑命名空间 。

索引可以比作数据库。

一个 分片 是一个底层的 工作单元 ,它仅保存了全部数据中的一部分。

而现在我们只需知道一个分片是一个 Lucene 的实例,以及它本身就是一个完整的搜索引擎。

我们的文档被存储和索引到分片内,但是应用程序是直接与索引而不是与分片进行交互。

一个分片可以是 主分片或者副本分片。 索引内任意一个文档都归属于一个主分片,所以主分片的数目决定着索引能够保存的最大数据量。

技术上来说,一个主分片最大能够存储 Integer.MAX_VALUE - 128 个文档,也就是20亿左右。
但是实际最大值还需要参考你的使用场景:包括你使用的硬件, 文档的大小和复杂程度,索引和查询文档的方式以及你期望的响应时长。

一个副本分片只是一个主分片的拷贝。 副本分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务。

在索引建立的时候就已经确定了主分片数,但是副本分片数可以随时修改。

1、创建索引

这个名字必须小写,不能以下划线开头,不能包含逗号。

1.1、创建索引

1
PUT		http://localhost:9200/blog

比如,创建一个名叫blog的索引,就可以发起一个PUT请求,http://localhost:9200/blog,返回如下信息即为创建成功。

1
2
3
4
5
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "blog"
}

索引在默认情况下会被分配5个主分片

1.2、创建时指定分片数量

当然我们可以在创建索引时指定主分片和副分片的数量,因为主分片在创建时就已经确定的,不允许再修改。

1
2
3
4
5
6
7
PUT http://localhost:9200/blog
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}

在head中查看索引信息:

  1. number_of_shards指定了主分片数量
  2. 加粗的黑框为主分片

    1.3、创建后修改分片数量

    主分片的数目在索引创建时就已经确定了下来。

实际上,这个数目定义了这个索引能够 存储 的最大数据量。(实际大小取决于你的数据、硬件和使用场景)

但是,读操作——搜索和返回数据——可以同时被主分片 或 副本分片所处理,所以当你拥有越多的副本分片时,也将拥有越高的吞吐量。

在运行中的集群上是可以动态调整副本分片数目的,我们可以按需伸缩集群。让我们把副本数从默认的 1 增加到 2 :

1
2
3
4
5
6
PUT		http://localhost:9200/blog/_settings
{
"settings" : {
"number_of_replicas" : 2
}
}

当然,如果只是在相同节点数目的集群上增加更多的副本分片并不能提高性能,因为每个分片从节点上获得的资源会变少。 你需要增加更多的硬件资源来提升吞吐量。

但是更多的副本分片数提高了数据冗余量:按照上面的节点配置,我们可以在失去2个节点的情况下不丢失任何数据。

2、删除索引

1
DELETE		http://localhost:9200/blog

返回 "acknowledged": true即为删除成功。

3、获取索引信息

3.1、获取索引

获取索引信息,如若获取多条索引信息,可以用逗号隔开

1
GET		http://localhost:9200/blog,lomtom

返回信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{
"blog": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_content"
}
}
},
"number_of_shards": "3",
"provided_name": "blog",
"creation_date": "1611036764992",
"number_of_replicas": "2",
"uuid": "xySJWl-4QTC4DQQH5jBwDA",
"version": {
"created": "7100199"
}
}
}
},
"lomtom": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_content"
}
}
},
"number_of_shards": "5",
"provided_name": "lomtom",
"creation_date": "1610975541850",
"number_of_replicas": "1",
"uuid": "jXGObpi8SNuo1osTu1Lrzg",
"version": {
"created": "7100199"
}
}
}
}
}

aliases、mappings、settings分别是别名、映射、设置

3.2、获取索引指定信息

当然我们也可以单独获取这些信息
例如获取设置如下,其他同理。

1
GET		http://localhost:9200/blog,lomtom/_settings

3.3、获取全部索引

如若想要获取全部的索引信息,可以使用*或_all代替索引名字。

1
GET		http://localhost:9200/_all

4、打开或关闭索引

4.1、打开索引

1
POST		http://127.0.0.1:9200/blog/_open

4.2、关闭索引

1
POST		http://127.0.0.1:9200/blog/_close

4.3、打开或关闭所有索引

与查看索引样,如若想要打开或关闭全部的索引信息,可以使用*或_all代替索引名字。

5、清空索引

1
2
3
4
5
6
7
POST /index_name/_delete_by_query

{
"query": {
"match_all": {}
}
}

ElasticSearch(三)ElasticSearch索引操作

https://lomtom.cn/e0fa4977.html

作者

lomtom

发布于

2021-12-03

更新于

2022-04-24

许可协议