elasticsearch--索引

索引一個文檔

文檔經過index API被索引——使數據能夠被存儲和搜索。可是首先咱們須要決定文檔所在。正如咱們討論的,文檔經過其_index_type_id惟一肯定。們能夠本身提供一個_id,或者也使用index API 爲咱們生成一個。web

使用本身的ID

若是你的文檔有天然的標識符(例如user_account字段或者其餘值表示文檔),你就能夠提供本身的_id,使用這種形式的index API:ide

PUT /{index}/{type}/{id}
{
  "field": "value",
  ...
}

例如咱們的索引叫作「website」,類型叫作「blog」,咱們選擇的ID是「123」,那麼這個索引請求就像這樣:ui

PUT /website/blog/123
{
  "title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2014/01/01"
}

Elasticsearch的響應:this

{
   "_index":    "website",
   "_type":     "blog",
   "_id":       "123",
   "_version":  1,
   "created":   true
}

響應指出請求的索引已經被成功建立,這個索引中包含_index_type_id元數據,以及一個新元素:_versionspa

Elasticsearch中每一個文檔都有版本號,每當文檔變化(包括刪除)都會使_version增長。在《版本控制》章節中咱們將探討如何使用_version號確保你程序的一部分不會覆蓋掉另外一部分所作的更改。版本控制

自增ID---有個使用前提,必須先擁有類型結構

若是咱們的數據沒有天然ID,咱們可讓Elasticsearch自動爲咱們生成。請求結構發生了變化:PUT方法——「在這個URL中存儲文檔」變成了POST方法——"在這個類型下存儲文檔"。(譯者注:原來是把文檔存儲到某個ID對應的空間,如今是把這個文檔添加到某個_type下)。code

URL如今只包含_index_type兩個字段:blog

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個字符長,URL-safe, Base64-encoded string universally unique identifiers, 或者叫 UUIDsip

相關文章
相關標籤/搜索