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"
          ]
        }
      }
    ]
  }
}

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