Elasticsearch 架好之後,最重要的是要拿它來建立索引資料,提供我們快速的搜尋服務,類似的搜尋服務有雲端的 Microsoft Azure Search,還有一樣是 Open Source 的 Solr,會介紹 Elasticsearch 主要是它操作起來非常簡單。
先建立一個 Index
利用 kopf 的介面,直接 create index。
在 name 的欄位輸入 Index 的名字(注意:Index name 必須都要是小寫),而 number of shards, number of replicas 可以用預設的,number of shards 的預設值是 5,number of replicas 預設值是 1。
確認後,按 Create 就建立完成了。
而上圖呈現的問題是,我們有 5×2 個 shards,可是我們只有 1 台伺服器,所以有 5 個 shards 沒有被分配到,不過這並不影響搜尋服務的運作狀況,只是在當這唯一一台伺服器掛點的時候,沒有其他伺服器可以接手搜尋服務。
假設我有一筆資料長得像下面這個樣子
{
"id": "X999_Y999",
"from": {
"name": "Tom Brady", "id": "X12"
},
"message": "Looking forward to 2010!",
"actions": [
{
"name": "Comment",
"link": "http://www.facebook.com/X999/posts/Y999"
},
{
"name": "Like",
"link": "http://www.facebook.com/X999/posts/Y999"
}
],
"type": "status",
"created_time": "2010-08-02T21:27:44+0000",
"updated_time": "2010-08-02T21:27:44+0000"
}
我利用 kopf 的 rest 工具(紅框處) 直接將這筆資料送給 Elasticsearch 索引,在藍框處鍵入 [index]/[type]
的相對路徑,以我的例子來講 index = mytestindex, type = mytype(我自己取的 type 名稱),而橘框處則是我要塞入的 JSON 資料字串。
索引成功後,右邊的 RESPONSE 區域就會收到成功的資訊。
執行關鍵字搜尋服務
當我們把想要索引的資料塞給 Elasticsearch 索引完畢後,我們就可以來搜尋了。
我們一樣使用 kopf 的 rest 工具,在藍框處鍵入 _search?q=[關鍵字]
,而我就來找內容有 Brady 這個關鍵字的資料,搜尋的結果就會顯示在右邊橘框處。
我們也可以針對特定欄位執行關鍵字搜尋,例如,我要找 from.name 有 Brady 關鍵字的資料,一樣可以。