Elasticsearch 索引

本文最后更新于:2024年3月18日 凌晨

Elasticsearch 索引

创建索引

  • 当用户将JSON对象传递到任何索引时,可以自动创建索引,也可以在此之前创建索引。
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
PUT /users

{
"mappings": {
"properties": {
"username": {
"type": "text",
"analyzer": "standard",
"search_analyzer": "standard"
},
"password": {
"type": "keyword"
},
"age": {
"type": "integer"
},
"birthday": {
"type": "date"
},
"desc": {
"type": "text",
"analyzer": "standard",
"search_analyzer": "standard"
}
}
},
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 2
}
},
"aliases": {
"alias1": {}
}
}
1
2
3
4
5
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "users"
}

索引映射

  • 映射是存储在索引中的文档的大纲,它定义数据类型,如文档和规则中存在的字段的字符串和格式,以控制动态添加的字段的映射。
  • 动态映射:用户可以将数据直接发布到任何未定义的映射,Elasticsearch将自动创建映射。

查看索引映射

1
GET /users/_mapping

修改索引映射

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
PUT /users/_mapping

{
"properties": {
"username": {
"type": "text",
"analyzer": "standard",
"search_analyzer": "standard"
},
"password": {
"type": "keyword"
},
"age": {
"type": "integer"
},
"birthday": {
"type": "date"
},
"desc": {
"type": "text",
"analyzer": "standard",
"search_analyzer": "standard"
}
}
}

字段数据类型

Elasticsearch支持文档中字段的多种不同数据类型,以下数据类型用于在Elasticsearch中存储字段。

  • 基本数据类型
    • 字符串类型:test,keyword(不会被分词器解析,只能等值查询)
    • 数值类型:long,integer,short,byte,double,float,half_float,scaled_float
    • 日期类型:date
    • 布尔值类型:boolean
    • 二进制类型:binary
    • 地理数据类型:这些数据类型用于定义地理属性,例如,geo_point用于定义经度和纬度,geo_shape用于定义不同的几何形状,如矩形。
    • 专用数据类型:这些数据类型用于特殊目的,如ip接受IP地址,完成数据类型用于支持自动完成建议,token_count用于计算字符串中的令牌数量。
  • 复杂数据类型 - 这些数据类型是核心数据类型的组合,类似数组,JSON对象和嵌套数据类型,以下是嵌套数据类型的示例。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POST /test

{
"group" : "players",
"user" : [
{
"first" : "dave",
"last" : "jones"
},

{
"first" : "kevin",
"last" : "morris"
}
]
}

删除索引

  • 删除任何索引,只需要传递一个删除请求以及指定索引的URL
1
DELETE /user
  • 可以通过使用_all*删除所有索引。

查询索引

  • 发送get请求到一个或多个索引来调用,这将返回有关索引的信息。
1
GET /users
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
{
"users": {
"aliases": {},
"mappings": {
"properties": {
"age": {
"type": "integer"
},
"birthday": {
"type": "date"
},
"desc": {
"type": "text",
"analyzer": "standard"
},
"password": {
"type": "keyword"
},
"username": {
"type": "text",
"analyzer": "standard"
}
}
},
"settings": {
"index": {
"creation_date": "1624587975757",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "-Et3JSFdQAqp0DBZjV0Uhg",
"version": {
"created": "7060199"
},
"provided_name": "users"
}
}
}
}
  • 可以使用_all*来获取所有索引的信息。
  • 可以通过向该索引发送获取请求来确定索引的存在,如果HTTP响应为200,则存在,如果是404,它不存在。

打开/关闭索引

  • 通过在post中添加_close_open来请求索引,可以很容易地关闭或打开一个或多个索引。

关闭索引

1
POST http://localhost:9200/schools/_close

打开索引

1
POST http://localhost:9200/schools/_open

索引别名

  • 使用_aliases关键字向任何索引提供别名,单个别名可以映射到多个别名,且别名不能与索引具有相同的名称。

查看索引别名

1
GET /_aliases
1
2
3
4
5
6
7
8
9
10
{
"index": {
"aliases": {}
},
"users": {
"aliases": {
"alias1": {}
}
}
}

添加索引别名

1
2
3
4
5
6
7
8
9
10
POST /_aliases
{
"actions" : [
{
"add" : {
"index" : "users",
"alias" : "alias1" }
}
]
}
  • 可以将一个别名添加到多个索引。
1
2
3
4
5
6
7
8
9
10
POST /_aliases
{
"actions" : [
{
"add" : {
"indices" : ["test1", "test2"],
"alias" : "alias1" }
}
]
}

删除索引别名

1
2
3
4
5
6
7
8
9
POST /_aliases
{
"actions" : [
{
"remove" : {
"index" : "users",
"alias" : "alias1" } }
]
}

索引设置

查询索引设置

1
GET users/_settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"users": {
"settings": {
"index": {
"creation_date": "1624587975757",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "-Et3JSFdQAqp0DBZjV0Uhg",
"version": {
"created": "7060199"
},
"provided_name": "users"
}
}
}
}

更新索引设置

1
2
3
4
5
6
7
PUT /user/_settings

{
"index" : {
"number_of_replicas" : 2
}
}

索引模板

  • 可以创建具有映射的索引模板,这可以应用于新的索引。
1
POST /_template/template_a
1
2
3
4
5
6
{
"template": "test*",
"settings": {
"number_of_shards": 3
}
}
  • tu开头的任何索引都将具有与模板相同的设置。

索引统计

  • 提取有关特定索引的统计信息。
1
GET users/_stats
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
{
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_all": {
"primaries": {
"docs": {
"count": 0,
"deleted": 0
},
"store": {
"size_in_bytes": 283
},
"indexing": {
"index_total": 0,
"index_time_in_millis": 0,
"index_current": 0,
"index_failed": 0,
"delete_total": 0,
"delete_time_in_millis": 0,
"delete_current": 0,
"noop_update_total": 0,
"is_throttled": false,
"throttle_time_in_millis": 0
},
"get": {
"total": 0,
"time_in_millis": 0,
"exists_total": 0,
"exists_time_in_millis": 0,
"missing_total": 0,
"missing_time_in_millis": 0,
"current": 0
},
"search": {
"open_contexts": 0,
"query_total": 2,
"query_time_in_millis": 0,
"query_current": 0,
"fetch_total": 2,
"fetch_time_in_millis": 0,
"fetch_current": 0,
"scroll_total": 0,
"scroll_time_in_millis": 0,
"scroll_current": 0,
"suggest_total": 0,
"suggest_time_in_millis": 0,
"suggest_current": 0
},
"merges": {
"current": 0,
"current_docs": 0,
"current_size_in_bytes": 0,
"total": 0,
"total_time_in_millis": 0,
"total_docs": 0,
"total_size_in_bytes": 0,
"total_stopped_time_in_millis": 0,
"total_throttled_time_in_millis": 0,
"total_auto_throttle_in_bytes": 20971520
},
"refresh": {
"total": 4,
"total_time_in_millis": 0,
"external_total": 3,
"external_total_time_in_millis": 0,
"listeners": 0
},
"flush": {
"total": 1,
"periodic": 0,
"total_time_in_millis": 0
},
"warmer": {
"current": 0,
"total": 2,
"total_time_in_millis": 0
},
"query_cache": {
"memory_size_in_bytes": 0,
"total_count": 0,
"hit_count": 0,
"miss_count": 0,
"cache_size": 0,
"cache_count": 0,
"evictions": 0
},
"fielddata": {
"memory_size_in_bytes": 0,
"evictions": 0
},
"completion": {
"size_in_bytes": 0
},
"segments": {
"count": 0,
"memory_in_bytes": 0,
"terms_memory_in_bytes": 0,
"stored_fields_memory_in_bytes": 0,
"term_vectors_memory_in_bytes": 0,
"norms_memory_in_bytes": 0,
"points_memory_in_bytes": 0,
"doc_values_memory_in_bytes": 0,
"index_writer_memory_in_bytes": 0,
"version_map_memory_in_bytes": 0,
"fixed_bit_set_memory_in_bytes": 0,
"max_unsafe_auto_id_timestamp": -1,
"file_sizes": {}
},
"translog": {
"operations": 0,
"size_in_bytes": 55,
"uncommitted_operations": 0,
"uncommitted_size_in_bytes": 55,
"earliest_last_modified_age": 0
},
"request_cache": {
"memory_size_in_bytes": 0,
"evictions": 0,
"hit_count": 0,
"miss_count": 0
},
"recovery": {
"current_as_source": 0,
"current_as_target": 0,
"throttle_time_in_millis": 0
}
},
"total": {
"docs": {
"count": 0,
"deleted": 0
},
"store": {
"size_in_bytes": 283
},
"indexing": {
"index_total": 0,
"index_time_in_millis": 0,
"index_current": 0,
"index_failed": 0,
"delete_total": 0,
"delete_time_in_millis": 0,
"delete_current": 0,
"noop_update_total": 0,
"is_throttled": false,
"throttle_time_in_millis": 0
},
"get": {
"total": 0,
"time_in_millis": 0,
"exists_total": 0,
"exists_time_in_millis": 0,
"missing_total": 0,
"missing_time_in_millis": 0,
"current": 0
},
"search": {
"open_contexts": 0,
"query_total": 2,
"query_time_in_millis": 0,
"query_current": 0,
"fetch_total": 2,
"fetch_time_in_millis": 0,
"fetch_current": 0,
"scroll_total": 0,
"scroll_time_in_millis": 0,
"scroll_current": 0,
"suggest_total": 0,
"suggest_time_in_millis": 0,
"suggest_current": 0
},
"merges": {
"current": 0,
"current_docs": 0,
"current_size_in_bytes": 0,
"total": 0,
"total_time_in_millis": 0,
"total_docs": 0,
"total_size_in_bytes": 0,
"total_stopped_time_in_millis": 0,
"total_throttled_time_in_millis": 0,
"total_auto_throttle_in_bytes": 20971520
},
"refresh": {
"total": 4,
"total_time_in_millis": 0,
"external_total": 3,
"external_total_time_in_millis": 0,
"listeners": 0
},
"flush": {
"total": 1,
"periodic": 0,
"total_time_in_millis": 0
},
"warmer": {
"current": 0,
"total": 2,
"total_time_in_millis": 0
},
"query_cache": {
"memory_size_in_bytes": 0,
"total_count": 0,
"hit_count": 0,
"miss_count": 0,
"cache_size": 0,
"cache_count": 0,
"evictions": 0
},
"fielddata": {
"memory_size_in_bytes": 0,
"evictions": 0
},
"completion": {
"size_in_bytes": 0
},
"segments": {
"count": 0,
"memory_in_bytes": 0,
"terms_memory_in_bytes": 0,
"stored_fields_memory_in_bytes": 0,
"term_vectors_memory_in_bytes": 0,
"norms_memory_in_bytes": 0,
"points_memory_in_bytes": 0,
"doc_values_memory_in_bytes": 0,
"index_writer_memory_in_bytes": 0,
"version_map_memory_in_bytes": 0,
"fixed_bit_set_memory_in_bytes": 0,
"max_unsafe_auto_id_timestamp": -1,
"file_sizes": {}
},
"translog": {
"operations": 0,
"size_in_bytes": 55,
"uncommitted_operations": 0,
"uncommitted_size_in_bytes": 55,
"earliest_last_modified_age": 0
},
"request_cache": {
"memory_size_in_bytes": 0,
"evictions": 0,
"hit_count": 0,
"miss_count": 0
},
"recovery": {
"current_as_source": 0,
"current_as_target": 0,
"throttle_time_in_millis": 0
}
}
},
"indices": {
"users": {
"uuid": "-Et3JSFdQAqp0DBZjV0Uhg",
"primaries": {
"docs": {
"count": 0,
"deleted": 0
},
"store": {
"size_in_bytes": 283
},
"indexing": {
"index_total": 0,
"index_time_in_millis": 0,
"index_current": 0,
"index_failed": 0,
"delete_total": 0,
"delete_time_in_millis": 0,
"delete_current": 0,
"noop_update_total": 0,
"is_throttled": false,
"throttle_time_in_millis": 0
},
"get": {
"total": 0,
"time_in_millis": 0,
"exists_total": 0,
"exists_time_in_millis": 0,
"missing_total": 0,
"missing_time_in_millis": 0,
"current": 0
},
"search": {
"open_contexts": 0,
"query_total": 2,
"query_time_in_millis": 0,
"query_current": 0,
"fetch_total": 2,
"fetch_time_in_millis": 0,
"fetch_current": 0,
"scroll_total": 0,
"scroll_time_in_millis": 0,
"scroll_current": 0,
"suggest_total": 0,
"suggest_time_in_millis": 0,
"suggest_current": 0
},
"merges": {
"current": 0,
"current_docs": 0,
"current_size_in_bytes": 0,
"total": 0,
"total_time_in_millis": 0,
"total_docs": 0,
"total_size_in_bytes": 0,
"total_stopped_time_in_millis": 0,
"total_throttled_time_in_millis": 0,
"total_auto_throttle_in_bytes": 20971520
},
"refresh": {
"total": 4,
"total_time_in_millis": 0,
"external_total": 3,
"external_total_time_in_millis": 0,
"listeners": 0
},
"flush": {
"total": 1,
"periodic": 0,
"total_time_in_millis": 0
},
"warmer": {
"current": 0,
"total": 2,
"total_time_in_millis": 0
},
"query_cache": {
"memory_size_in_bytes": 0,
"total_count": 0,
"hit_count": 0,
"miss_count": 0,
"cache_size": 0,
"cache_count": 0,
"evictions": 0
},
"fielddata": {
"memory_size_in_bytes": 0,
"evictions": 0
},
"completion": {
"size_in_bytes": 0
},
"segments": {
"count": 0,
"memory_in_bytes": 0,
"terms_memory_in_bytes": 0,
"stored_fields_memory_in_bytes": 0,
"term_vectors_memory_in_bytes": 0,
"norms_memory_in_bytes": 0,
"points_memory_in_bytes": 0,
"doc_values_memory_in_bytes": 0,
"index_writer_memory_in_bytes": 0,
"version_map_memory_in_bytes": 0,
"fixed_bit_set_memory_in_bytes": 0,
"max_unsafe_auto_id_timestamp": -1,
"file_sizes": {}
},
"translog": {
"operations": 0,
"size_in_bytes": 55,
"uncommitted_operations": 0,
"uncommitted_size_in_bytes": 55,
"earliest_last_modified_age": 0
},
"request_cache": {
"memory_size_in_bytes": 0,
"evictions": 0,
"hit_count": 0,
"miss_count": 0
},
"recovery": {
"current_as_source": 0,
"current_as_target": 0,
"throttle_time_in_millis": 0
}
},
"total": {
"docs": {
"count": 0,
"deleted": 0
},
"store": {
"size_in_bytes": 283
},
"indexing": {
"index_total": 0,
"index_time_in_millis": 0,
"index_current": 0,
"index_failed": 0,
"delete_total": 0,
"delete_time_in_millis": 0,
"delete_current": 0,
"noop_update_total": 0,
"is_throttled": false,
"throttle_time_in_millis": 0
},
"get": {
"total": 0,
"time_in_millis": 0,
"exists_total": 0,
"exists_time_in_millis": 0,
"missing_total": 0,
"missing_time_in_millis": 0,
"current": 0
},
"search": {
"open_contexts": 0,
"query_total": 2,
"query_time_in_millis": 0,
"query_current": 0,
"fetch_total": 2,
"fetch_time_in_millis": 0,
"fetch_current": 0,
"scroll_total": 0,
"scroll_time_in_millis": 0,
"scroll_current": 0,
"suggest_total": 0,
"suggest_time_in_millis": 0,
"suggest_current": 0
},
"merges": {
"current": 0,
"current_docs": 0,
"current_size_in_bytes": 0,
"total": 0,
"total_time_in_millis": 0,
"total_docs": 0,
"total_size_in_bytes": 0,
"total_stopped_time_in_millis": 0,
"total_throttled_time_in_millis": 0,
"total_auto_throttle_in_bytes": 20971520
},
"refresh": {
"total": 4,
"total_time_in_millis": 0,
"external_total": 3,
"external_total_time_in_millis": 0,
"listeners": 0
},
"flush": {
"total": 1,
"periodic": 0,
"total_time_in_millis": 0
},
"warmer": {
"current": 0,
"total": 2,
"total_time_in_millis": 0
},
"query_cache": {
"memory_size_in_bytes": 0,
"total_count": 0,
"hit_count": 0,
"miss_count": 0,
"cache_size": 0,
"cache_count": 0,
"evictions": 0
},
"fielddata": {
"memory_size_in_bytes": 0,
"evictions": 0
},
"completion": {
"size_in_bytes": 0
},
"segments": {
"count": 0,
"memory_in_bytes": 0,
"terms_memory_in_bytes": 0,
"stored_fields_memory_in_bytes": 0,
"term_vectors_memory_in_bytes": 0,
"norms_memory_in_bytes": 0,
"points_memory_in_bytes": 0,
"doc_values_memory_in_bytes": 0,
"index_writer_memory_in_bytes": 0,
"version_map_memory_in_bytes": 0,
"fixed_bit_set_memory_in_bytes": 0,
"max_unsafe_auto_id_timestamp": -1,
"file_sizes": {}
},
"translog": {
"operations": 0,
"size_in_bytes": 55,
"uncommitted_operations": 0,
"uncommitted_size_in_bytes": 55,
"earliest_last_modified_age": 0
},
"request_cache": {
"memory_size_in_bytes": 0,
"evictions": 0,
"hit_count": 0,
"miss_count": 0
},
"recovery": {
"current_as_source": 0,
"current_as_target": 0,
"throttle_time_in_millis": 0
}
}
}
}
}

刷新清除数据

  • 索引内存中清除数据,并将其迁移到索引存储,并清除内部事务日志。
1
GET users/_flush
1
2
3
4
5
6
7
{
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}

刷新索引

  • 默认情况下,刷新在Elasticsearch中一般按计划来执行,但可以使用_refresh显式刷新一个或多个索引。
1
POST /users/_refresh
1
2
3
4
5
6
7
{
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}