Elasticsearch快速入門以及簡單CRUD

一、簡介

Java是面向對象的,都是Java類。Mysql是面向數據行的,一行一行的。而我們的Elasticsearch是面向document的(文檔,理解成json格式就行)。

二、集羣管理api

1、查看健康狀態api

GET _cat/health?v
在這裏插入圖片描述

2、status詳解

有三種狀態:green、yellow、red

  • green

每個索引的primary shard和replica shard都是active狀態的

  • yellow

每個索引的primary shard都是active狀態的,但是部分replica shard不是active狀態,處於不可用的狀態

  • red

不是所有索引的primary shard都是active狀態的,部分索引有數據丟失了

3、索引管理

3.1、查看索引

GET _cat/indices?v
在這裏插入圖片描述

三個索引

3.2、新增索引

PUT test_index?pretty
在這裏插入圖片描述
再次查看 GET _cat/indices?v
在這裏插入圖片描述

3.3、刪除索引

DELETE test_index?pretty
在這裏插入圖片描述
再次查看 GET _cat/indices?v
在這裏插入圖片描述

我們的test_index沒了,被刪了。

三、CRUD

ES的搜索語法賊拉多,賊拉牛逼。這裏只演示

1、添加

1.1、語法格式

PUT index/type/id
{
	"key", "value"
}

Elasticsearch7.x已經將type的概念移除了,不能自定義,每個index只能是默認的不可修改的名叫_doc的type,所以語法變成了如下

PUT index/_doc/id
{
	"key", "value"
}

1.2、Demo

PUT test_index/_doc/1 
{
  "name": "mobile",
  "desc": "shouji",
  "price":  3000,
  "brandName": "xiaomi",
  "tags": ["5G", "niubi"]  
}

在這裏插入圖片描述

2、根據id搜索

2.1、語法格式

GET index/_doc/id

2.2、Demo

GET test_index/_doc/1

在這裏插入圖片描述

3、修改

3.1、全量覆蓋

3.1.1、語法格式

PUT index/_doc/id
{
	"key", "value"
}

其實就是添加文檔的語法。如果index/doc/id存在,則會覆蓋掉老的【這個覆蓋需要注意的是比如之前五個字段,你這次只PUT了一個字段,那麼其餘四個會被刪除,相當於刪除重建】。不存在,則會創建。如果只想更新某個字段怎麼辦?看下面的動態更新。

3.1.2、Demo

PUT test_index/_doc/1 
{
  "name": "xiaomi mobile"
}

在這裏插入圖片描述
再次查看這個document
在這裏插入圖片描述

我們在把數據還原回去,這樣方便下面的測試。

3.2、動態更新

3.2.1、語法格式

POST index/_update/id
{
	"doc": {
		"key", "value"
	}
}

3.2.2、Demo

將name的mobile改爲shouhuan

POST test_index/_update/1
{
  "doc": {
    "name": "shouhuan"
  }
}

在這裏插入圖片描述
查看是否修改成功
在這裏插入圖片描述

4、刪除

4.1、語法格式

DELETE index/_doc/id

4.2、Demo

DELETE test_index/_doc/1

在這裏插入圖片描述
再次查看,看是否是真的刪除了
在這裏插入圖片描述

5、搜索全部

5.1、語法格式

GET index/_search

5.2、Demo

再準備一條id=2的數據

PUT test_index/_doc/2 
{
  "name": "mobile2",
  "desc": "shouji2",
  "price":  30002
}

進行搜索

GET test_index/_search

返回結果

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "test_index",
        "_type" : "test_type",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "name" : "mobile2",
          "desc" : "shouji2",
          "price" : 30002
        }
      },
      {
        "_index" : "test_index",
        "_type" : "test_type",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "name" : "mobile",
          "desc" : "shouji",
          "price" : 3000,
          "brandName" : "xiaomi",
          "tags" : [
            "5G",
            "niubi"
          ]
        }
      }
    ]
  }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章