Elasticsearch數據存儲方式


Elasticsearch數據存儲方式

2.7.1Elasticsearch存儲方式

1面向文檔

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

2JSON

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

以下使用JSON文檔來表示一個用戶對象:

{

    "email":      "john@smith.com",

    "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並做索引要比在表結構中做相同的事情簡單的多。

2.7.2Elasticsearch存儲結構

 

 

 

 

Mysql數據與ES數據轉化

 

(1)元數據

 

創建文檔語句

PUT root/doc

{

“name”:”zhangsan”,

“age”:10

}

 

_index:文檔所在索引名稱

_type:文檔所在類型名稱

_id:文檔唯一id

_uid:組合id,由_type_id組成(6.x后,_type不再起作用,同_id

_source:文檔的原始Json數據,包括每個字段的內容

_all:將所有字段內容整合起來,默認禁用(用於對所有字段內容檢索)

2)名詞解釋

索引 index

一個索引就是一個擁有幾分相似特征的文檔的集合。比如說,你可以有一個客戶數據的索引,另一個產品目錄的索引,還有一個訂單數據的索引。一個索引由一個名字來標識(必須全部是小寫字母的),並且當我們要對對應於這個索引中的文檔進行索引、搜索、更新和刪除的時候,都要使用到這個名字。在一個集群中,可以定義任意多的索引。

類型 type

Es6之后,一個index中只能有一個type

在一個索引中,你可以定義一種或多種類型。一個類型是你的索引的一個邏輯上的分類/分區,其語義完全由你來定。通常,會為具有一組共同字段的文檔定義一個類型。比如說,我們假設你運營一個博客平台並且將你所有的數據存儲到一個索引中。在這個索引中,你可以為用戶數據定義一個類型,為博客數據定義另一個類型,當然,也可以為評論數據定義另一個類型。

字段Field

相當於是數據表的字段,對文檔數據根據不同屬性進行的分類標識

l document

一個文檔是一個可被索引的基礎信息單元。比如,你可以擁有某一個客戶的文檔,某一個產品的一個文檔,當然,也可以擁有某個訂單的一個文檔。文檔以JSONJavascript Object Notation)格式來表示,而JSON是一個到處存在的互聯網數據交互格式。在一個index/type里面,你可以存儲任意多的文檔。注意,盡管一個文檔,物理上存在於一個索引之中,文檔必須被索引/賦予一個索引的type

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM