1. 程式人生 > >ElasticSearch教程-文件的概念介紹

ElasticSearch教程-文件的概念介紹

面向文件

應用中的物件很少只是簡單的鍵值列表,更多時候它擁有複雜的資料結構,比如包含日期、地理位置、另一個物件或者陣列。

總有一天你會想到把這些物件儲存到資料庫中。將這些資料儲存到由行和列組成的關係資料庫中,就好像是把一個豐富,資訊表現力強的物件拆散了放入一個非常大的表格中:你不得不拆散物件以適應表模式(通常一列表示一個欄位),然後又不得不在查詢的時候重建它們。

Elasticsearch是面向文件(document oriented)的,這意味著它可以儲存整個物件或文件(document)。然而它不僅僅是儲存,還會索引(index)每個文件的內容使之可以被搜尋。在Elasticsearch中,你可以對文件(而非成行成列的資料)進行索引、搜尋、排序、過濾。這種理解資料的方式與以往完全不同,這也是Elasticsearch能夠執行復雜的全文搜尋的原因之一。

JSON

ELasticsearch使用Javascript物件符號(JavaScript Object Notation),也就是JSON,作為文件序列化格式。JSON現在已經被大多語言所支援,而且已經成為NoSQL領域的標準格式。它簡潔、簡單且容易閱讀。

以下使用JSON文件來表示一個使用者物件:

{
    "email":      "[email protected]",
    "first_name": "John",
    "last_name":  "Smith",
    "info": {
        "bio":         "Eco-warrior and defender of the weak",
        "age":         25,
        "interests": [ "dolphins", "whales" ]
    },
    "join_date": "2014/05/01"
}

儘管原始的user物件很複雜,但它的結構和物件的含義已經被完整的體現在JSON中了,在Elasticsearch中將物件轉化為JSON並做索引要比在表結構中做相同的事情簡單的多。

NOTE

儘管幾乎所有的語言都有相應的模組用於將任意資料結構轉換為JSON,但每種語言處理細節不同。具體請檢視“serialization” or “marshalling”兩個用於處理JSON的模組。Elasticsearch官方客戶端會自動為你序列化和反序列化JSON。