# 面向文檔
程序中的對(duì)象很少是單純的鍵值與數(shù)值的列表。更多的時(shí)候它擁有一個(gè)復(fù)雜的結(jié)構(gòu),比如包含了日期、地理位置、對(duì)象、數(shù)組等。
遲早你會(huì)把這些對(duì)象存儲(chǔ)在數(shù)據(jù)庫(kù)中。你會(huì)試圖將這些豐富而又龐大的數(shù)據(jù)都放到一個(gè)由行與列組成的關(guān)系數(shù)據(jù)庫(kù)中,然后你不得不根據(jù)每個(gè)字段的格式來(lái)調(diào)整數(shù)據(jù),然后每次重建它你都要檢索一遍數(shù)據(jù)。
Elasticsearch 是 _面向文檔型數(shù)據(jù)庫(kù)_,這意味著它存儲(chǔ)的是整個(gè)對(duì)象或者 _文檔_,它不但會(huì)存儲(chǔ)它們,還會(huì)為他們建立**索引**,這樣你就可以搜索他們了。你可以在 Elasticsearch 中索引、搜索、排序和過(guò)濾這些文檔。不需要成行成列的數(shù)據(jù)。這將會(huì)是完全不同的一種面對(duì)數(shù)據(jù)的思考方式,這也是為什么 Elasticsearch 可以執(zhí)行復(fù)雜的全文搜索的原因。
# JSON
Elasticsearch使用 [_JSON_](http://baike.baidu.com/view/136475.htm?fr=aladdin) (或稱(chēng)作JavaScriptObject Notation ) 作為文檔序列化的格式。JSON 已經(jīng)被大多數(shù)語(yǔ)言支持,也成為 NoSQL 領(lǐng)域的一個(gè)標(biāo)準(zhǔn)格式。它簡(jiǎn)單、簡(jiǎn)潔、易于閱讀。
把這個(gè) JSON 想象成一個(gè)用戶對(duì)象:
~~~
{
"email": "john@smith.com",
"first_name": "John",
"last_name": "Smith",
"about": {
"bio": "Eco-warrior and defender of the weak",
"age": 25,
"interests": [ "dolphins", "whales" ]
},
"join_date": "2014/05/01",
}
~~~
雖然 `user` 這個(gè)對(duì)象非常復(fù)雜,但是它的結(jié)構(gòu)和含義都被保留到 JSON 中了。在 Elasticsearch 中,將對(duì)象轉(zhuǎn)換為 JSON 并作為索引要比在表結(jié)構(gòu)中做相同的事情簡(jiǎn)單多了。
> ### 將你的數(shù)據(jù)轉(zhuǎn)換為 JSON
幾乎所有的語(yǔ)言都有將任意數(shù)據(jù)轉(zhuǎn)換、機(jī)構(gòu)化成 JSON,或者將對(duì)象轉(zhuǎn)換為JSON的模塊。查看 `serialization` 以及 `marshalling` 兩個(gè) JSON 模塊。[The official Elasticsearch clients](http://www.elasticsearch.org/guide) 也可以幫你自動(dòng)結(jié)構(gòu)化 JSON。
- Introduction
- 入門(mén)
- 初識(shí)
- 安裝
- API
- 文檔
- 索引
- 搜索
- 匯總
- 小結(jié)
- 分布式
- 本章總結(jié)
- 分布式集群
- 空集群
- 集群健康
- 添加索引
- 容錯(cuò)移轉(zhuǎn)
- 橫向擴(kuò)展
- 擴(kuò)展
- 故障恢復(fù)
- 索引
- 文檔
- Get
- 存在
- 更新
- 創(chuàng)建
- 刪除
- 版本控制
- 局部更新
- Mget
- Bulk
- 總結(jié)
- 分布式文檔存儲(chǔ)
- 路由
- 主從互通
- 創(chuàng)建索引刪除
- 獲取
- 局部更新
- 批量請(qǐng)求
- 批量格式
- 搜索
- 空白搜索
- 多索引多類(lèi)型
- 分頁(yè)
- 查詢語(yǔ)句
- 映射與統(tǒng)計(jì)
- Exact_vs_full_text
- Inverted_index
- Analysis
- Mapping
- Complex_datatypes
