技術上來講,一個主分片最大可以存儲 Integer.MAX_VALUE - 128 個文檔,可是實際最大值還須要參考你的使用場景:包括你使用的硬件, 文檔的大小和複雜程度,索引和查詢文檔的方式以及你指望的響應時長。html
在 Elasticsearch 中, 每一個字段的全部數據 都是 默認被索引的 。 即每一個字段都有爲了快速檢索設置的專用倒排索引。並且,不像其餘多數的數據庫,它能在 相同的查詢中 使用全部這些倒排索引,並以驚人的速度返回結果。web
全部須要咱們作的就是選擇一個索引名,這個名字必須小寫,不能如下劃線開頭,不能包含逗號。 數據庫
註解:index不能是大寫,不然沒法將數據加入到ES中。json
一個type 命名能夠是大寫或者小寫,可是不能如下劃線或者句號開頭,不該該包含逗號, 而且長度限制爲256個字符. 數組
自定義type和id,輸入的請求應該是put開頭:app
PUT /website/blog/123 { "title": "My first blog entry", "text": "Just trying this out...", "date": "2014/01/01" }
若是使用自動生成id,輸入的請求是post開頭:elasticsearch
POST /website/blog/ { "title": "My second blog entry", "text": "Still trying this out...", "date": "2014/01/01" }
若是你的數據沒有天然的 ID, Elasticsearch 能夠幫咱們自動生成 ID 。 請求的結構調整爲: 再也不使用
PUT
謂詞(「使用這個 URL 存儲這個文檔」), 而是使用POST
謂詞(「存儲文檔在這個 URL 命名空間下」)。分佈式
put是有冪等性,而post是非冪等性,換句話說,屢次執行put,返回的結果必定相同。ide
在 Elasticsearch 中文檔是 不可改變 的,不能修改它們。 相反,若是想要更新現有的文檔,須要 重建索引或者進行替換;
update
API, 這個 API 能夠用於 partial updates to a document 。 雖然它彷佛對文檔直接進行了修改,但實際上 Elasticsearch 執行如下過程:post
- 從舊文檔構建 JSON
- 更改該 JSON
- 刪除舊文檔
- 索引一個新文檔
update的做用是僅僅將這些流程合在了一塊兒。
在分佈式系統中深度分頁
理解爲何深度分頁是有問題的,咱們能夠假設在一個有 5 個主分片的索引中搜索。 當咱們請求結果的第一頁(結果從 1 到 10 ),每個分片產生前 10 的結果,而且返回給 協調節點 ,協調節點對 50 個結果排序獲得所有結果的前 10 個。
如今假設咱們請求第 1000 頁--結果從 10001 到 10010 。全部都以相同的方式工做除了每一個分片不得不產生前10010個結果之外。 而後協調節點對所有 50050 個結果排序最後丟棄掉這些結果中的 50040 個結果。
能夠看到,在分佈式系統中,對結果排序的成本隨分頁的深度成指數上升。這就是 web 搜索引擎對任何查詢都不要返回超過 1000 個結果的緣由。
爲了可以將時間域視爲時間,數字域視爲數字,字符串域視爲全文或精確值字符串, Elasticsearch 須要知道每一個域中數據的類型。這個信息包含在映射中。
https://elasticsearch.cn/book/elasticsearch_definitive_guide_2.x/mapping-intro.html
該連接很準確的解釋了mapping。mapping一旦定義,就沒法改變。
考慮包含 內部對象的數組是如何被索引的。 假設咱們有個
followers
數組:{ "followers": [ { "age": 35, "name": "Mary White"}, { "age": 26, "name": "Alex Jones"}, { "age": 19, "name": "Lisa Smith"} ] }這個文檔會像咱們以前描述的那樣被扁平化處理,結果以下所示:
{ "followers.age": [19, 26, 35], "followers.name": [alex, jones, lisa, smith, mary, white] }
{age: 35}
和{name: Mary White}
之間的相關性已經丟失了,由於每一個多值域只是一包無序的值,而不是有序數組。這足以讓咱們問,「有一個26歲的追隨者?」可是咱們不能獲得一個準確的答案:「是否有一個26歲 名字叫 Alex Jones 的追隨者?」
相關內部對象被稱爲 nested 對象,能夠回答上面的查詢