插入文档(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

posted @ 2014-05-15 13:34  QQ1350995917  Views(298)  Comments(0)    收藏  举报