Elasticsearch中document的基礎知識
寫在前面的話:讀書破萬卷,編碼如有神
--------------------------------------------------------------------
參考內容:
《Elasticsearch頂尖高手系列-快速入門篇》,中華石杉
--------------------------------------------------------------------
主要內容包括:
- document的核心元數據
- document id的手動指定和自動生成
- document的_source元數據以及定制返回結果
--------------------------------------------------------------------
1、document的核心元數據
document的核心元數據有三個:_index、_type、_id
(1.1) _index元數據
- 代表一個document存放在哪個index中
- 類似的數據放在一個索引中,非類似的數據放在不同的索引中:product index(包含了所有的商品)、sales index(包含了所有的商品銷售數據)、inventory index(包含了所有庫存的相關數據)
- index中包含了很多類似的document: 類似是什麽意思呢,其實指的就是說,這些document的fields很大一部分是相同的,你說你放了3個document,每個document的fields都完全不一樣,這就不是類似了,就不太適合放到一個index裏面去了
- 索引名稱必須是小寫,不能用下劃線開頭,不包含逗號
(1.2) _type元數據
- 代表document屬於index的哪個類別
- 一個索引通常會劃分為多個type,邏輯上對index有些許不同的幾類數據進行分類
- type名稱可以是大寫或者小寫,但是同時不能用下劃線開頭,不能包含逗號
(1.3) _id元數據
- 代表document的唯一標識,與_index和_type一起可以起唯一標識和定位一個document
- 我們可以手動指定document的id,也可以不指定,由es自動為我們創建一個id
--------------------------------------------------------------------
2、document id的手動指定和自動生成
(2.1)、手動指定document id
根據應用情況來說,是否滿足手動指定document id的前提:一般來說,是從某些其他系統中導入一些數據到es時會采取這種方式,就是系統中已有數據的唯一標識,作為es中的document的id
語法格式為:
put /index/type/id
{
"json"
}
(2.2)、自動生成document id
語法格式:
post /index/type
{
"json"
}
自動生成的id,長度為20個字符,URL安全、base64編碼、GUID、分布式系統並行生成時不可能發生沖突。
--------------------------------------------------------------------
3、document的_source元數據以及定制返回結果
(3.1)、_source元數據
首先我們往es中添加一條數據:
1 PUT /test_index/test_type/1 2 { 3 "test_field1":"test field1", 4 "test_field2":"test field2" 5 }
查詢這條數據:
1 GET /test_index/test_type/1 2 返回結果: 3 { 4 "_index": "test_index", 5 "_type": "test_type", 6 "_id": "1", 7 "_version": 1, 8 "found": true, 9 "_source": { 10 "test_field1": "test field1", 11 "test_field2": "test field2" 12 } 13 }
_source元數據,就是說,我們在創建一個document的時候,使用的那個放在request body中的json串,默認情況下,在get的時候會原封不動的給我們返回。
(3.2)、定制返回結果,指定_source中返回哪些field
1 GET /test_index/test_type/1?_source=test_field2 2 返回結果: 3 { 4 "_index": "test_index", 5 "_type": "test_type", 6 "_id": "1", 7 "_version": 1, 8 "found": true, 9 "_source": { 10 "test_field2": "test field2" 11 } 12 }
Elasticsearch中document的基礎知識