Elasticsearch API实现CRUD(增删改查)

1、Kibana的安装、配置及使用

本文将基于Kibana来讲解,再次之前需要安装Kibana工具。

  1. 进入Elasticsearch官网下载Kibana:https://www.elastic.co/downloads/kibana,需要注意的是Kibana的版本跟随着Elasticsearch的版本,所以需要下载跟你的Elasticsearch一致的版本。
  2. 解压kibana的压缩包,进入config目录下,修改kibana.yml文件中的elasticsearch.url参数,将localhost修改为你的Elasticsearch服务的IP。
  3. 启动bin目录下的kibana(基于Linux)或者bin目录下的kibana.bat(基于Windows)。
2、添加索引

添加索引

# ib是索引名
PUT /lib/ 
{
  "settings":{
	 "index":{
		"number_of_shards": 5, # 分片数
		"number_of_replicas": 1 # 副本数
	 }
  }
}

# 这样创建的索引配置信息将是默认的
PUT lib2

# 返回结果
{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "lib"
}

查看索引的配置信息

GET /lib/_settings

# 返回结果
{
  "lib":{
	 "settings":{
		"creation_date": "1525922783367",
		"number_of_shards": 5,
		"number_of_replicas": 1,
		"uuid": "ICnRur_NTn2s9sM04XE_rQ",
		"version": {
		   "created": "6020499"
		},
		"provided_name": "lib"
	 }
  }
}

# 查看所有索引的配置
GET _all/_setings

添加文档

# 分别为索引:_index、类型:_type、Id:_id,
# id不设置将会自动生成一个随机且唯一的字符串作为该文档的id(需要使用POST请求)
PUT /lib/user/1  
{
  "frist_name": "Jane",
  "last_name": "Smith",
  "age": 32,
  "about": "I like to collect rock albums",
  "interests": ["music"]
}

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 1,
  "result": "created", # 返回请求结果
  "_shards": {
	 "total": 1,
	 "successful": 1,
	 "failed": 0
  },
  "_seq_no": 0,
  "_primary_trem": 1
}

查看文档

# 查看文档
GET /lib/user/1

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
	 "frist_name": "Jane",
	 "last_name": "Smith",
	 "age": 32,
	 "about": "I like to collect rock albums",
	 "interests": [
		"music"
	 ]
  }
}

# 查看部分字段
GET /lib/user/1?_source=age,about

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": { 
	 "about": "I like to collect rock albums",
	 "age": 32
  }
}

更新文档

# 覆盖式修改PUT
PUT /lib/user/1  
{
  "frist_name": "Jane",
  "last_name": "Smith",
  "age": 36, # 原本的age是32
  "about": "I like to collect rock albums",
  "interests": ["music"]
}

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 2, # 更新版本发生了改变
  "result": "updated", # 返回请求结果发生了改变
  "_shards": {
	 "total": 1,
	 "successful": 1,
	 "failed": 0
  },
  "_seq_no": 1, //
  "_primary_trem": 1
}

# 直接更新
POST /lib/user/1/_update
{
  "doc":{
	 "age": 30
  }
}

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 3, # 更新版本再次发生了改变
  "result": "updated", # 返回请求结果依然为updated
  "_shards": {
	 "total": 1,
	 "successful": 1,
	 "failed": 0
  },
  "_seq_no": 2,
  "_primary_trem": 1
}

更新文档对并发问题的处理
使用POST方式进行更新,当出现并发问题时,内部使用的时乐观锁(使用version,通过版本控制来解决并发冲突的问题——查看Elastic search 版本控制)。
还可以使用retry_on_conflict(设置数值表示的重复该动作的次数);如果当前线程对文档的更新失败了,并设置了retry_on_conflict,将重新获取文档数据和版本信息进行更新

POST /lib/user/4/_update?retry_on_conflict=3&version=5

删除索引

# 删除一个文档
DELETE /lib/user/1

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "_version": 4, # 更新版本再次发生了改变
  "result": "deleted", # 返回请求结果deleted
  "_shards": {
	 "total": 1,
	 "successful": 1,
	 "failed": 0
  },
  "_seq_no": 3,
  "_primary_trem": 1
}

# 此时再次获取id为1的文档
GET /lib/user/1

# 返回结果
{
  "_index": "lib",
  "_type": "user",
  "_id": "1",
  "found": false
}

# 删除一个索引
DELETE /lib

# 返回结果
{
  "acknowledged": true
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值