Elasticsearch入门使用

本文详细介绍了Elasticsearch的基本概念,包括索引、类型和映射,并通过实例演示了如何新增、查看、更新和删除文档。此外,还涉及到了文档的全量替换和局部更新策略,以及如何执行条件删除和清空索引。内容涵盖了Elasticsearch的主要操作方法,是初学者的实用教程。
摘要由CSDN通过智能技术生成

Elasticsearch入门使用

概念

索引(index)

类似的数据放在一个索引,非类似的数据放不同索引, 一个索引也可以理解成一个关系型数据库。

类型(type)

代表document属于index中的哪个类别(type)也有一种说法一种type就像是数据库的表,比如dept表,user表。

注意ES每个大版本之间区别很大:
ES 5.x中一个index可以有多种type。
ES 6.x中一个index只能有一种type。
ES 7.x以后 要逐渐移除type这个概念。

映射(mapping)

mapping定义了每个字段的类型等信息。相当于关系型数据库中的表结构。

常用数据类型:text、keyword、number、array、range、boolean、date、geo_point、ip、nested、object

对比MYSQL可以看到
在这里插入图片描述

新增文档

文档,即索引库中的数据,会根据规则创建索引,将来用于搜索。可以类比做数据库中的一行数据。

手动指定Id

POST /test01_demo/_doc/1
{
  "name": "百度",
  "job": "小度用户运营经理",
  "payment": "30000",
  "logo": "http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbU AABJB7x9sm8374.png"
}

在这里插入图片描述

自动生成id

POST /test01_demo/_doc/  //这不需要指定id即可
{
  "name": "auto 百度",
  "job": "auto 小度用户运营经理",
  "payment": "100",
  "logo": "http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbU AABJB7x9sm8374.png"
}

在这里插入图片描述

查看单个文档

在这里插入图片描述

字段说明

在这里插入图片描述

查看所有文档


POST /test01_demo/_search

{
  "query":{
    "match_all": {}
  }
}

在这里插入图片描述

返回指定字段

需要使用 _source 进行指定


POST /test01_demo/_search?_source=name,job

{
  "query":{
    "match_all": {}
  }
}

在这里插入图片描述

更新文档(全部更新)

这里使用为PUT也可以

id对应文档存在,则修改


POST /test01_demo/_doc/1
{
  "name": "百度 update",
  "job": "小度用户运营经理",
  "payment": "10000",
  "logo": "http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbU AABJB7x9sm8374.png"
}

在这里插入图片描述
id对应文档不存在,则新增


// 更新

POST /test01_demo/_doc/3
{
  "name": "百度 update 333 ",
  "job": "小度用户运营经理",
  "payment": "10000",
  "logo": "http://www.lgstatic.com/thubnail_120x120/i/image/M00/21/3E/CgpFT1kVdzeAJNbU AABJB7x9sm8374.png"
}

可以看到Id为3的数据不存在,es直接新增

在这里插入图片描述

当前更新为全量更新,可以看到字段只剩一个了

先更新
// 更新

POST /test01_demo/_doc/3
{
  "name": "百度 update 333 "
}


再查看

// 查看id 3的文档
GET  /test01_demo/_doc/3

可以看到当前数据version 是 2 表示此数据目前经历过2个版本,新增一次 修改一次。

在这里插入图片描述

Elasticsearch可以使用PUT或者POST对文档进行更新(全部更新),如果指定ID的文档已经存在,则执行更新操作。

更新文档(局部更新)

Elasticsearch执行更新操作的时候,Elasticsearch首先将旧的文档标记为删除状态,然后添加新的文档,旧的文档不会立即消失,但是你也无法访问,Elasticsearch会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档。

全部更新,是直接把之前的老数据,标记为删除状态,然后,再添加一条更新的(使用PUT或者POST)

局部更新,只是修改某个字段(使用POST)


// 局更新  更新值 然后再新增一个job属性
POST /test01_demo/_update/3
{
  "doc": {
    "name": "百度 update 444",
    "job":"java 开发"
  }
}

// 查看
GET  /test01_demo/_doc/3

在这里插入图片描述

删除文档

将刚才id是3的删除

DELETE /test01_demo/_doc/3

在这里插入图片描述

根据条件删除
POST /test01_demo/_delete_by_query
{
 "query": {
   "match": {
     "job": "java 开发"
   }
 }
}

在这里插入图片描述

删除所有文档
# 删除所有
POST /test01_demo/_delete_by_query
{
  "query": {
    "match_all": {}
  }
}

在这里插入图片描述

文档的全量替换、强制创建

全量替换

语法与创建文档是一样的,如果文档id不存在,那么就是创建;如果文档id已经存在,那么就是全量替换操作,替换文档的json串内容;

文档是不可变的,如果要修改文档的内容,第一种方式就是全量替换,直接对文档重新建立索引,替换里面所有的内容,elasticsearch会将老的文档标记为deleted,然后新增我们给定的一个文档,当我们创建越来越多的文档的时候,elasticsearch会在适当的时机在后台自动删除标记为deleted的文档

强制创建

语法
PUT /index/_doc/{id}?op_type=create {}

PUT /index/_doc/{id}/_create {}

PUT /test01_demo/_doc/3?op_type=create 
{
  "query": {
    "match": {
      "job": "java 开发"
    }
  }
}

或者

PUT /test01_demo/_doc/3/_create 
{
  "query": {
    "match": {
      "job": "java 开发"
    }
  }
}

如果id 存在就会报错

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TizzyGoodhealth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值