插入文档(indexing a document)
使用index api,文档就可以被插入,存储和检索。首先,我们要确定在那里存储文档。正如以前说过的,一个文档被_index _type _id共同标记了一个document。在存储数据的时候可以提供一个_id,也可以让ES帮助我们生成一个。
使用自定义的ID
如果你的document已经有一个唯一的标记,例如user_account字段或其他的能唯一标记document的字段,那么你就可以使用他们作为_id,如下形式
PUT /{index}/{type}/{id}
{
"field":"value",
...
}
例如,你的index是website,type是blog,id是123,
PUT /website/blog/123
{
"title":"My first blog entry",
"text": "Just trying this out...",
"date": "2014/01/01"
}
ES会对以上的请求做出相应
{
"_index": "website",
"_type": "blog",
"_id": "123",
"_version": 1,
"created": true
}
这个相应标记了你的请求是成功的,并且显示了_index _type _id等元数据,还有一个_version。
ES中每个document都有一个version编号,document的每次改变包括删除,都会让_version增加。在 Dealing with conflicts中我们将会介绍怎么使用_version编号来保证你自己的应用的document数据不被其他的应用改写。
自动生成的ID
如果你的数据没有一个ID,可以让ES为你生成一个。请求的结构有所变化:使用POST——“在这个URL下存储数据”,代替了PUT——“使用这个URL存储数据”。样例如下:
POST /website/blog/
{
"title":"My second blog entry",
"text": "Still trying this out...",
"date": "2014/01/01"
}
相应的数据除了_id都和以前很相似。
{
"_index": "website",
"_type": "blog",
"_id": "wM0OSFhDQXGZAWDf0-drSA",
"_version": 1,
"created": true
}
自动生成的ID是一个22字符组成的字符串,网址安全,Base64编码的字符串通用唯一标识符,或UUID。
原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/index-doc.html