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的文档。

文档的内容,以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的方式与这个有什么不同:

我们去head插件首页看看:

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

我们点击【刷新】按钮。

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

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

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

下面我们再来看看如果在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的插入方式有什么不同:

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

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

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

总结

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

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

猜你喜欢

转载自my.oschina.net/happyBKs/blog/1795612