核心概念:
(1)near realtime(nrt):近實時,兩個意思,從寫入資料到資料可以被搜尋到有乙個小延遲(大概1秒);基於es執行搜尋和分析可以達到秒級
(2)cluster:集群,包含多個節點,每個節點屬於哪個集群是通過乙個配置(集群名稱,預設是elasticsearch)來決定的,對於中小型應用來說,剛開始乙個集群就乙個節點很正常
(3)node:節點,集群中的乙個節點,節點也有乙個名稱(預設是隨機分配的),節點名稱很重要(在執行運維管理操作的時候),預設節點會去加入乙個名稱為「elasticsearch」的集群,如果直接啟動一堆節點,那麼它們會自動組成乙個elasticsearch集群,當然乙個節點也可以組成乙個elasticsearch集群
(4)document&field:文件,es中的最小資料單元,乙個document可以是一條客戶資料,一條商品分類資料,一條訂單資料,通常用json資料結構表示,每個index下的type中,都可以去儲存多個document。乙個document裡面有多個field,每個field就是乙個資料字段。
product document
| elasticsearch | |資料庫
|-document-|-行-|
|-type-|-表-|
|-index-|-庫-|
常用命令:
1、快速檢查集群的健康狀況:get /_cat/health?v
如何快速了解集群的健康狀況?green、red、yellow?
green:每個索引的primary shard和replica shard都是active狀態的
yellow:每個索引的primary shard都是active狀態的,但是部分replica shard不是active狀態
red:不是所有索引的primary shard和replica shard都是active狀態的,部分索引有資料丟失
2、快速查詢集群中有那些索引:get/_cat/indices?v
3、建立索引:put /index/type/id
新增商品:
put /ecommerce/product/1
put /ecommerce/product/2
put /ecommerce/product/3
4、刪除索引:delete /test_index?pretty
5、查詢索引:get /index/type/id
查詢商品:
get /ecommerce/product/1
}
6、修改索引:替換文件
put /ecommerce/product/1
替換方式有乙個不好,即使必須帶上所有的field,才能去進行資訊的修改
7、修改索引:更新文件
post /ecommerce/product/1/_update
}
8、刪除索引:刪除文件
delete /ecommerce/product/1
9、搜尋全部資料:get /ecommerce/product_search
timed_out:是否超時,這裡是沒有
_shards:資料拆成了5個分片,所以對於搜尋請求,會打到所有的primary shard(或者是它的某個replica shard也可以)
hits.total:查詢結果的數量,3個document
hits.max_score:score的含義,就是document對於乙個search的相關度的匹配分數,越相關,就越匹配,分數也高
hits.hits:包含了匹配搜尋的document的詳細資料
該搜尋方式語法類似於http請求,如搜尋商品名稱中包含yagao的商品且按照售價進行降序排列的查詢語句為:
get /commerce/product/_search?q=name:yagao&sort=price:desc
10、按特定領域查詢資料:
get /index/type/_search}}
1)查詢所有商品:
get /ecommerce/product/_search
}}
2)查詢名字中包含yagao的商品並按**降序排列:
get /ecommerce/product/_search
}, "sort":}
3)分頁查詢商品
分頁每頁顯示1條,顯示第二頁
get /ecommerce/product/_search
}, "from":1,
"size":1
}
4)指定要查詢出商品的**和名稱就可以
更加適合生產環境的使用,可以構建複雜的查詢
5)搜尋商品名稱中包含yagao,而且**大於25元的商品
get /ecommerce/product/_search
},"filter": }}
}}}
6)全文搜尋
get /ecommerce/product/_search
}}
producer這個屬性先被拆分建立倒排索引
7)短語搜尋
查詢producer欄位包含「yagao producer 」的商品資訊
get /ecommerce/product/_search
}}
8)高亮搜尋結果
將producer欄位包含「gaolujie」的商品prducer高亮
elasticsearch學習入門
由於es更新很快,本文這類快餐式的記錄僅供參考 es的官網有比較全面的api,但我看過以後感覺api的層次還是有點亂,至少沒有mongodb的文件那麼簡單易讀。從簡單的應用開始慢慢認識es的。比如要搭建個中文新聞資訊的搜尋引擎,新聞有 標題 內容 作者 型別 發布時間 這五個字段 我們要提供 標題和...
elasticsearch 入門學習
原文 1 思考 大規模資料如何檢索 當系統資料量上了10億 100億條的時候,我們在做系統架構的時候通常會從以下角度去考慮問題 2 傳統資料庫的應對解決方案 對於關係型資料,我們通常採用以下或類似架構去解決查詢瓶頸和寫瓶頸 3 非關係型資料庫的解決方案 對於nosql資料庫,以mongdb為例,其它...
Elasticsearch 學習筆記
參考 關係型資料庫 elasticsearch 資料庫database索引index,支援全文檢索 表table型別type 資料行row文件document,但不需要固定結構,不同文件可以具有不同字段集合 資料列column字段field 模式schema 索引字段型別numeric dataty...