【Elasticsearch入門】快速學習Elasticsearch 增刪改查編程
目标
本文将简要介绍Elasticsearch中基本操作之一的CRUD。
-
- CRUD
-
- Search
query
aggregation
弹性搜索
Elasticsearch 是一个开源的全文搜索引擎,由Elastic社基于Java编写,并基于Apache Lucene开发。
您可以通过注册的文档,快速搜索包含目标单词的文档。
通常,Elasticsearch 使用 Restful API 进行操作。
版本等
Elasticsearch:7.6.2
Kibana:7.6.2
※ 为了方便进行CRUD操作,将使用Kibana的DevTools。
环境准备
就环境而言,我们按照以下帖子的说明进行了准备。
【Elasticsearch入门】环境搭建
【Elasticsearch入门】环境搭建 Windows版
我马上去摸。
增删改查 chá)
我們將介紹有關文件的創建、獲取、更新和刪除。
创建
指定ID以创建文档。
PUT /{index}/_doc/{Document ID}
{
"key1": "value1",
"key2": {
"key2-1": "value2-1",
"key2-2": "value2-2",
}
}
请求
PUT my_index/_doc/1
{
"name": "elasticsearch",
"message": "hello world",
"price": 100
}
回應
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
通过响应结果可以得知,已经创建了一个”_id”为”1″的文档。
如果想要通过指定ID来创建文档,可以使用PUT方法。
创建文档时无需指定ID
POST /{index}/_doc
{
"key1": "value1",
"key2": {
"key2-1": "value2-1",
"key2-2": "value2-2",
}
}
请求
POST my_index/_doc
{
"name": "kibana",
"message": "hello world",
"price": 100
}
回应
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "oJ3HcXMBFnhBnJdYQvy1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
从响应结果可以看出,已经创建了一个名为”_id”为”oJ3HcXMBFnhBnJdYQvy1″的文档。
如果想在不指定ID的情况下创建文档,可以使用POST请求来自动分配ID。
阅读
通过指定ID来获取文档。
GET /{index}/_doc/{Document ID}
请求
GET my_index/_doc/1
回应
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "elasticsearch",
"message" : "hello world",
"price" : 100
}
}
从响应结果中可以看到,已获取到ID为”1″的文档。
此外,通过查看”_source”的内容,还可以查看实际文档的内容。
更新
1. 文件的更新
PUT /{index}/_doc/{Document ID}
{
"key1": "value1",
"key2": {
"key2-1": "value2-1",
"key2-2": "value2-2",
}
}
给一个例子
PUT my_index/_doc/1
{
"name": "elasticsearch2",
"message": "hello world2",
"price": 200
}
响应
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 1,
"_primary_term" : 1
}
根据响应结果可以看到使用”_version”: 2进行的表述,说明”_id”: “1”的文档已被更新。此外,可以通过GET my_index/_doc/1来查看实际的文档。
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 2,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "elasticsearch2",
"message" : "hello world2",
"price" : 200
}
}
2. 部分更新文档
可以使用PUT来更新整个文档,也可以部分更新特定的字段。
POST /{index}/_update/{Document ID}
{
"doc": {
"key1": "value1",
"key2": {
"key2-1": "value2-1",
"key2-2": "value2-2",
}
}
}
例子
POST my_index/_update/1
{
"doc": {
"price": 500
}
}
回应
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 3,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 2,
"_primary_term" : 1
}
根据响应结果的”_version” : 3表明,可知”_id” : “1”的文档已被更新。此外,可以通过GET my_index/_doc/1来查看实际的文档。
{
"_index" : "my_index",
"_type" : "_doc",
"_id" : "1",
"_version" : 3,
"_seq_no" : 2,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "elasticsearch2",
"message" : "hello world2",
"price" : 500
}
}
「价格」:我认为你只会发现更新了500的价格。
删除
你可以根据以下请求进行删除。
DELETE {index}
请求
DELETE my_index
回应
{
"acknowledged" : true
}
推荐教材
-
- はじめてのElasticsearch
- はじめてのKibana