ElasticSearch基础介绍:3:使用Restful API进行document的增删改查

本文详述如何使用ElasticSearch的Restful API进行document的增删改查。首先介绍环境准备和基础知识,接着通过实例展示指定id创建、查询、修改和删除document的步骤,并解释相关错误信息和操作结果。
摘要由CSDN通过智能技术生成

在这里插入图片描述
ElasticSearch提供了方便的Restful API对数据进行操作,这篇文章将继续在上篇文章的基础之上使用Restful API进行document的增删改查。

环境准备

可参看如下内容:

基础知识

ElasticSearch是基于Lucene的全文搜索,在搜索对象的管理上,虽然不是一个数据库,在一些常见的概念上还是可以进行大体的类比,相关常见的概念如下所示:

常用术语 关系型数据库 Elasticsearch
数据库 database index
table type
row document
column field

对于document的增删改查

数据库使用insert/delete等DML语句对相关的表进行增删改查的操作,而事先需要使用DDL语言进行schema的定义,在前面的文章中对Elasticsearch的介绍中就已经提到过,Elasticsearch无需预先进行schema的定义,这也是和传统的关系型数据库比如MySQL或者Oracle明显的区别之一。
相较于数据库的数据的增删改查的类似操作,在ElasticSearch中,也可以通过Restful的API非常容易地做到,以下结合具体使用示例来进行说明。

事前准备

创建一个名为test_index_1的index,用于保存document的相关数据。

设定项 设定值 说明
ElasticSearch URL http://localhost:9200 可以访问到的Elasticsearch的环境,此处为本机的服务
HTTP方法 PUT 使用PUT进行索引的创建
index名称 /test_index_1 指定创建的索引的名称

执行日志如下所示:
从返回的json结果的acknowledged字段为true可以判断此index已经成功创建。

[root@host131 ~]# curl -XGET http://localhost:9200/_cat/indices
[root@host131 ~]# curl -XPUT http://localhost:9200/test_index_1?pretty
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "test_index_1"
}
[root@host131 ~]# curl -XGET http://localhost:9200/_cat/indices
yellow open test_index_1 1xy1jsRTQKmZLUj9dPoLmg 1 1 0 0 230b 230b
[root@host131 ~]#

指定id方式创建document

创建如下document相关信息,用于记录相关人员的姓名/编号/兴趣的信息。

字段 设定值
name liumiaocn
userid 1001
hobby swimming
设定项 设定值 说明
ElasticSearch URL http://localhost:9200 可以访问到的Elasticsearch的环境,此处为本机的服务
HTTP方法 PUT 使用PUT进行document的创建
Content-Type application/json 指定json作为Content-Type而非x-www-form-urlencoded
index名称 /test_index_1 指定索引的名称,document将保存在此index中
type名称 persons/ 指定document的type信息
id编号 1/ 指定Elasticsearch所用的id编号,如不指定会自动生成
  • 执行命令
curl -XPUT -H Content-Type:application/json http://localhost:9200/test_index_1/persons/1 -d '{
	"name": "liumiaocn",
	"userid": 1001,
	"hobby": "swimming"
}'
  • 执行日志示例
    执行日志示例如下所示,从返回的信息中可以看到成功创建的信息。
[root@host131 ~]# curl -XPUT -H Content-Type:application/json http://localhost:9200/test_index_1/persons/1 -d '{
> "name": "liumiaocn",
> "userid": 1001,
> "hobby": "swimming"
> }';
{"_index":"test_index_1","_type":"persons","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}[root@host131 ~]# 
  • 常见错误信息
    如不指定Content-Type,缺省form表单的提交可能会得到如下错误提示:
{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}

而从整体的index信息中,也可以查询到此index的document的信息,docs.count的数量可以看到为1(注意此值的更新会受Elasticsearch的缺省或者手动refresh的操作的影响)。

[root@host131 ~]# curl
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值