ElasticSearch笔记系列(5)——插入文档的两种方式

上一篇说了创建索引,本文说一下数据插入。

概述

在ES中,插入分为两种:

(1)指定文档id插入

(2)自动产生文档id插入

这个和关系型数据库插入记录有点类似,主键id要么在插入时自己指定,要么让数据库按照某种策略自动生成。

在ES中,所谓文档id是指,一个唯一索引值指向我们的文档数据。

接下来我们用postman来插入我们的文档数据。

(本文出自oschina博主happybks的博文:https://my.oschina.net/happyBKs/blog/1795612)

指定文档id插入

我们在上一篇文章示例的rent索引的community类型下尝试插入一个id为1的文档。

插入的API的请求为put类型,url为http://localhost:9200/rent/community/1

其中rent为索引,community为类型,我们在rent索引的community类型下插入一个文档id为1的文档。

161948_2RdY_1156339.png

文档的内容,以json的形式作为请求体写入。postman选择put协议、body下选择raw,选择json格式。

输入内容:

{
	"communityname":"汤城一品",
	"city":"上海",
	"age":10,
	"creationdate":"2008-01-01"
	
}

点击提交,返回以下内容,插入文档成功:

注意_id就是我们指定的文档id,为1.

{
    "_index": "rent",
    "_type": "community",
    "_id": "1",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 2,
        "failed": 0
    },
    "created": true
}

这里我们注意指定文档id的方式插入文档的几个要点,图中已经用红色标记出来,一会儿看看后面介绍自动生成文档id的方式与这个有什么不同:

173953_4Pr4_1156339.png

我们去head插件首页看看:

在刷新以前,rent索引对应的文档数是0

172328_tJwQ_1156339.png

我们点击【刷新】按钮。

我们可以看到docs文档数变成了1,后面括号了的2代表 包含副本的话有两个文档(别忘了我们设置了副本数为1,那么我们每插入一个文档,自然也会为其创建一个副本,所以刚才一共生成了2个文档)。

另外,索引rent的size也发生了变化。

172518_kutb_1156339.png

我们再点击数据浏览标签,可以查看我们插入的文档数据。

172834_cpd2_1156339.png

 

下面我们再来看看如果在ES中插入文档数据时,让ES自动为其生成文档id。

 

自动生成文档id的方式插入

这里有一个非常重要的不同的地方,一定注意!!!!

当你用自动生成文档id的方式在ES中插入文档的时候,使用RESTFUL API的协议是POST!!!

(而刚才指定文档id的插入数据的方式,是引用的PUT协议)

我们使用post协议请求:http://localhost:9200/rent/community/

然后选择body的raw,json格式:

{
	"communityname":"世茂滨江花园",
	"city":"上海",
	"age":9,
	"creationdate":"2009-01-01 00:00:00"
}

提交成功,插入文档,并自动生成了文档_id。如下,自动生成的文档id是一个非数字的id。

{
    "_index": "rent",
    "_type": "community",
    "_id": "AWLDhHMpoILHeA4gRvV7",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 2,
        "failed": 0
    },
    "created": true
}

我再把请求的三个重要要点和区别用红色标注,请比较自动生成id的方式与刚才指定id的插入方式有什么不同:

174601_kDvk_1156339.png

我们回到head插件刷新后看到:

rent索引的文档数量变成了2个,包含副本是4个

174723_ysMk_1156339.png

我们查看数据,新插入的文档也出现了,注意他两个的_id,你可以轻易看出哪一个是自动插入的,哪一个是手动指定的。

174844_6aOl_1156339.png

 

总结

这里对两种方式请求时的两个注意点和区别做个标红。

指定id插入自动生成id插入
协议 PUT协议 POST
http://localhost:9200/rent/community/1http://localhost:9200/rent/community/
  
  

 

 

 

 

 

转载于:https://my.oschina.net/happyBKs/blog/1795612

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值