简介:Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,用于快速存储、搜索和分析大量数据。它具有高性能、可扩展性和灵活性的特点,被广泛用于构建实时搜索、日志分析、数据可视化等应用。
本文主要介绍ES索引的操作,索引中数据的操作,增、删、改功能。
Docker version 20.10.22
elasticsearch:7.13.3
kibana:7.13.3
ps:具体启动命令参考第一篇ES博客
创建索引,my_test_index,分别有四个字段id、name、age、remark
PUT:代表请求方式为 put 类型
my_test_index:代表索引的名称
number_of_shards:分片数
number_of_replicas:副本数
正如上述所说,put请求是restful请求中的类型,也就是说es支持http请求的方式执行命令,只需在
/
前添加es的地址即可。
PUT /my_test_index_part2
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "keyword"
},
"age": {
"type": "integer"
},
"remark": {
"type": "text"
}
}
}
}
// 执行结果
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "my_test_index_part2"
}
索引(index)中的数据称为document,一条document相当于一条数据,下面介绍几种添加数据的方法
POST /<index>/_doc
PUT /<index>/_doc/<_id>
POST /<index>/_create/<_id>
PUT /<index>/_create/<_id>
第一个单词代表请求方式、
指索引名称、_doc
和_create
代表是两种方式插入数据,下面开始插入数据
分别执行下面命令
POST /my_test_index_part2/_doc
{
"id": "1",
"name": "张三",
"age": "18",
"remark": "张三爱吃肉"
}
POST /my_test_index_part2/_doc/2
{
"id": "2",
"name": "李四",
"age": "19",
"remark": "李四爱吃水果"
}
PUT /my_test_index_part2/_doc/3
{
"id": "3",
"name": "王五",
"age": "20",
"remark": "王五爱吃蔬菜"
}
GET /my_test_index_part2/_search
先说结论,在_doc
的情况下
运行结果如下:
{
// 省略....
"hits" : {
"total" : {
"value" : 3,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "my_test_index_part2",
"_type" : "_doc",
"_id" : "2",
"_score" : 1.0,
"_source" : {
"id" : "2",
"name" : "李四",
"age" : "19",
"remark" : "李四爱吃水果"
}
},
// 省略....
{
"_index" : "my_test_index_part2",
"_type" : "_doc",
"_id" : "8tf8sYoBBTGuuZu3VQCK",
"_score" : 1.0,
"_source" : {
"id" : "1",
"name" : "张三",
"age" : "18",
"remark" : "张三爱吃肉"
}
}
]
}
}
分别执行下面命令
POST /my_test_index_part2/_create/4
{
"id":"4",
"name": "李四四",
"age": "21",
"remark":"李四四爱吃水果"
}
PUT /my_test_index_part2/_create/5
{
"id":"5",
"name": "王五五",
"age": "22",
"remark":"王五五爱吃蔬菜"
}
GET /my_test_index_part2/_search
结论,在_create
的情况下
在上述命令中remark字段添加叹号后运行结果,只有_doc
带有<_id>
的命令执行成功,其他均失败。结论:必须指定**<_id>**
,在**<_doc>**
下进行执行才行。
POST /my_test_index_part2/_doc/5
{
"id":"5",
"name": "王五五",
"age": "22",
"remark":"王五五爱吃蔬菜!!!"
}
// 执行此命令查看修改结果
GET /my_test_index_part2/_search
<_id>填写返回的_id字段的值即可
DELETE /<index>/_doc/<_id>
DELETE /my_test_index/_doc/aCnJjYoBcmOMV0ezI5zx
POST /
POST /
PUT /
POST /
PUT /
DELETE /
单条
GET /
全部
GET /