【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
广告
将在 10 秒后关闭
bannerAds