elasticsearch基礎的概念-文檔

什麼是文檔?

程序中大多的實體或對象可以被序列化爲包含鍵值對的JSON對象,鍵(key)字段(field)屬性(property)的名字,值(value)能夠是字符串、數字、布爾類型、另外一個對象、值數組或者其餘特殊類型,好比表示日期的字符串或者表示地理位置的對象。web

{
    "name":         "John Smith",
    "age":          42,
    "confirmed":    true,
    "join_date":    "2014-06-01",
    "home": {
        "lat":      51.5,
        "lon":      0.1
    },
    "accounts": [
        {
            "type": "facebook",
            "id":   "johnsmith"
        },
        {
            "type": "twitter",
            "id":   "johnsmith"
        }
    ]
}

一般,咱們能夠認爲對象(object)文檔(document)是等價相通的。不過,他們仍是有所差異:對象(Object)是一個JSON結構體——相似於哈希、hashmap、字典或者關聯數組;對象(Object)中還可能包含其餘對象(Object)。 在Elasticsearch中,文檔(document)這個術語有着特殊含義。它特指最頂層結構或者根對象(root object)序列化成的JSON數據(以惟一ID標識並存儲於Elasticsearch中)。數據庫

文檔元數據

一個文檔不僅有數據。它還包含了元數據(metadata)——關於文檔的信息。三個必須的元數據節點是:數組

節點 說明
_index 文檔存儲的地方
_type 文檔表明的對象的類
_id 文檔的惟一標識

_index

索引(index)相似於關係型數據庫裏的「數據庫」——它是咱們存儲和索引關聯數據的地方。數據結構

提示:app

事實上,咱們的數據被存儲和索引在分片(shards)中,索引只是一個把一個或多個分片分組在一塊兒的邏輯空間。然而,這只是一些內部細節——咱們的程序徹底不用關心分片。對於咱們的程序而言,文檔存儲在索引(index)中。剩下的細節由Elasticsearch關心既可。spa

咱們將會在《索引管理》章節中探討如何建立並管理索引,但如今,咱們將讓Elasticsearch爲咱們建立索引。咱們惟一須要作的僅僅是選擇一個索引名。這個名字必須是所有小寫,不能如下劃線開頭,不能包含逗號。讓咱們使用website作爲索引名。code

_type

在應用中,咱們使用對象表示一些「事物」,例如一個用戶、一篇博客、一個評論,或者一封郵件。每一個對象都屬於一個類(class),這個類定義了屬性或與對象關聯的數據。user類的對象可能包含姓名、性別、年齡和Email地址。對象

在關係型數據庫中,咱們常常將相同類的對象存儲在一個表裏,由於它們有着相同的結構。同理,在Elasticsearch中,咱們使用相同類型(type)的文檔表示相同的「事物」,由於他們的數據結構也是相同的。blog

每一個類型(type)都有本身的映射(mapping)或者結構定義,就像傳統數據庫表中的列同樣。全部類型下的文檔被存儲在同一個索引下,可是類型的映射(mapping)會告訴Elasticsearch不一樣的文檔如何被索引。 咱們將會在《映射》章節探討如何定義和管理映射,可是如今咱們將依賴Elasticsearch去自動處理數據結構。索引

_type的名字能夠是大寫或小寫,不能包含下劃線或逗號。咱們將使用blog作爲類型名。

_id

id僅僅是一個字符串,它與_index_type組合時,就能夠在Elasticsearch中惟一標識一個文檔。當建立一個文檔,你能夠自定義_id,也可讓Elasticsearch幫你自動生成。

其它元數據

還有一些其它的元數據,咱們將在《映射》章節探討。使用上面提到的元素,咱們已經能夠在Elasticsearch中存儲文檔並經過ID檢索——換言說,把Elasticsearch作爲文檔存儲器使用了。

相關文章
相關標籤/搜索