啓動kibana可能會慢一些,點一個enter,嘗試一下html
邏輯設計包括:文檔,類型,索引python
物理設計包括:節點和分片mysql
一個索引類型中,包含多個文檔,好比文檔1,文檔2,...sql
當咱們索引一篇文章時,能夠經過下面的順序找到(索引>類型>文檔ID),經過這個組合咱們就能索引到某個具體的文檔.數據庫
注意,ID沒必要是整數,其實是字符串服務器
elasticsearch是面向文檔的,那麼就意味着索引和搜索數據的最小單位是文檔elasticsearch
類型是文檔的邏輯容器,就像關係型數據庫同樣,表格是行的容器spa
索引是映射類型的容器,elasticsearch中的索引是一個很是大的文檔集合.設計
一個集羣包含至少一個節點,而一個節點就是一個elasticsearch進程,節點內能夠有多個索引.3d
若是建立一個索引,那麼這個索引將會有5個分片(primary shard,又稱主分片)構成,而每一個分片又有一個副本(replica shard,又稱複製分片),這樣,就有了10個分片.
那麼這個全部是如何存儲在集羣中的呢?
上圖是有3個節點的集羣能夠看到主分片和對應的複製分片都不會再同一個節點內,這樣有利於某個節點掛掉了,數據也不至於丟失.
實際上,一個分片是一個lucene索引,一個包含倒排索引的結構使得elasticsearch在不掃描所有文檔的狀況下,就能鈣素你哪些文檔包含特定的關鍵字.
P表明分片,R表明複製分片.
elasticsearch的數據組織
mysql es
數據庫 索引
表 類型
行 文檔
字段 字段
關係型數據庫中 能夠有多個表
es中也說5版本前一個索引能夠有多個類型,緣由es根據luence來的,因此可能存在問題.
1個數據庫只能有一張表,咱們將他們分開才行.
elasticsearch將每一個索引劃分爲多個分片,每一個分片又能夠在集羣中的不一樣服務器見遷移.
elastic 使用的是一種倒排索引的結果,採用luence的倒排索引做爲底層,這種結構適合快速的全文搜索,一個索引由文檔中全部不重複的列表構成,對於每個詞,都有一個包含它的文檔列表.
例如,如今有兩個文檔,每一個文檔包含以下內容
Study every day, good good up to forever # 文檔1包含的內容
To forever, study every day, good good up # 文檔2包含的內容
爲了建立倒排索引,咱們首先要將每一個文檔拆分紅獨立的詞(或稱爲詞條或者tokens),而後建立一個包含全部不重複的詞條的排序列表,而後列出每一個詞條出如今哪一個文檔:
兩個文檔都匹配,可是第一個文檔比第二個匹配程度更高。若是沒有別的條件,如今,這兩個包含關鍵字的文檔都將返回。
再來看一個示例,好比咱們經過博客標籤來搜索博客文章。那麼倒排索引列表就是這樣的一個結構:
若是要搜索含有python
標籤的文章,那相對於查找全部原始數據而言,查找倒排索引後的數據將會快的多。只須要查看標籤這一欄,而後獲取相關的文章ID便可。
不重複且惟一的詞條
在elasticsearch中,索引
這個詞被頻繁使用,這就是術語的使用。
而且elasticsearch將索引被分爲多個分片,每份分片是一個Lucene的索引。因此一個elasticsearch索引是由多個Lucene索引組成的。別問爲何,誰讓elasticsearch使用Lucene做爲底層呢!
如無特指,提及索引都是指elasticsearch的索引。
示例1:
s18/doc/1
索引/類型/id
PUT是添加的意思
示例2:
GET指的是查找的意思
示例3:
上邊是字符串查詢
示例4:查詢全部以及刪除
示例5:
獲得右邊的結果:
示例6,看一下主分片:
獲得下面的結果:
示例7:
獲得下面的結果
別名的優勢:用戶感覺不到數據的變化,悄悄的在後臺作
用別名作查詢的優勢.
參考blog:NB的開哥