/bin/elasticsearchhtml
瀏覽器訪問: http://localhost:9400/_count?pretty請求文檔數量,?pretty表示格式化輸出web
一個 Elasticsearch 集羣能夠 包含多個索引 ,相應的每一個索引能夠包含多個類型。 這些不一樣的類型存儲着多個文檔 ,每一個文檔又有多個屬性數據庫
索引(名詞):數組
如前所述,一個 索引 相似於傳統關係數據庫中的一個 數據庫 ,是一個存儲關係型文檔的地方。 索引 (index) 的複數詞爲 indices 或 indexes 。
索引(動詞):瀏覽器
索引一個文檔 就是存儲一個文檔到一個 索引 (名詞)中以便它能夠被檢索和查詢到。這很是相似於 SQL 語句中的 INSERT 關鍵詞,除了文檔已存在時新文檔會替換就文檔狀況以外。
倒排索引:併發
關係型數據庫經過增長一個 索引 好比一個 B樹(B-tree)索引 到指定的列上,以便提高數據檢索速度。Elasticsearch 和 Lucene 使用了一個叫作 倒排索引 的結構來達到相同的目的。
一個文檔必須包含三個元數據:elasticsearch
_index 索引 _type 對象類別 _id 文檔標識
POST http://localhost:9400/megacorp/employee/1 { "first_name" : "Douglas", "last_name" : "Fir", "age" : 35, "about": "I like to build cabinets", "interests": [ "forestry" ] }
若是指定的ID的文檔已經存在的話,將會覆蓋這個ID的文檔數據分佈式
若是數據沒有天然的ID,ElasticSearch能夠自動生成ID,這時應該以下增長數據:ide
POST http://localhost:9400/megacorp/employee/ { "title": "My second blog entry", "text": "Still trying this out...", "date": "2014/01/01" }
若是想在對應的ID不存在時才進行索引文檔的話,增長_create或者設置op_type爲create以下操做:ui
POST http://localhost:9400/megacorp/employee/1/_create or POST http://localhost:9400/megacorp/employee/1/_create?op_type=create
同建立時的PUT方法,增長_update表示更新文檔一部分 能夠增長?version參數進行併發下的衝突處理
POST /website/blog/1/_update { "doc" : { "tags" : [ "testing" ], "views": 0 } }
DELETE http://localhost:9400/megacorp/employee/1
GET http://localhost:9400/megacorp/employee/_search
HEAD /megacorp/employee/1
GET /megacorp/employee/_search
返回結果放在數組 hits 中。一個搜索默認返回十條結果。
能夠將簡單的搜索條件放到url中:
GET http://localhost:9400/megacorp/employee/_search?q=first_name:John
簡單查詢
GET /megacorp/employee/_search { "query" : { "match" : { "last_name" : "Smith" } } }
增長過濾查詢
GET /megacorp/employee/_search { "query" : { "bool": { "must": { "match" : { "last_name" : "smith" } }, "filter": { "range" : { "age" : { "gt" : 30 } } } } } }
短語匹配match_phrase 和match的區別:match_phrase會明確匹配查詢的條件,不會進行分詞查詢,match會分詞查詢
高亮查詢
查詢結果會在句子中匹配的詞組增長<em>標籤包裹,
詳細高亮查詢:高亮查詢
GET /megacorp/employee/_search { "query" : { "match_phrase" : { "about" : "rock climbing" } }, "highlight": { "fields" : { "about" : {} } } }
查詢能夠指定timeout時間
GET /_search?timeout=10ms
查詢分頁
GET /_search?size=5 GET /_search?size=5&from=5 GET /_search?size=5&from=10
在分佈式系統中深度分頁
理解爲何深度分頁是有問題的,咱們能夠假設在一個有 5 個主分片的索引中搜索。 當咱們請求結果的第一頁(結果從 1 到 10 ),每個分片產生前 10 的結果,而且返回給 協調節點 ,協調節點對 50 個結果排序獲得所有結果的前 10 個。
如今假設咱們請求第 1000 頁--結果從 10001 到 10010 。全部都以相同的方式工做除了每一個分片不得不產生前10010個結果之外。 而後協調節點對所有 50050 個結果排序最後丟棄掉這些結果中的 50040 個結果。
能夠看到,在分佈式系統中,對結果排序的成本隨分頁的深度成指數上升。這就是 web 搜索引擎對任何查詢都不要返回超過 1000 個結果的緣由。