1. 程式人生 > >Elasticsearch 搜尋名詞的理解

Elasticsearch 搜尋名詞的理解

在進一步使用 Elasticsearch 之前,讓我們先了解幾個關鍵概念。

在邏輯層面:

  • Index (索引):這裡的 Index 是名詞,一個 Index 就像是傳統關係資料庫的 Database,它是 Elasticsearch 用來儲存資料的邏輯區域
  • Document (文件):Elasticsearch 使用 JSON 文件來表示一個物件,就像是關係資料庫中一個 Table 中的一行資料
  • Type (型別):文件歸屬於一種 Type,就像是關係資料庫中的一個 Table
  • Field (欄位):每個文件包含多個欄位,類似關係資料庫中一個 Table 的列

我們用一個表格來做類比,如下:

Elasticsearch MySQL
Index Database
Type Table
Document Row
Field Column

在物理層面:

  • Node (節點):node 是一個執行著的 Elasticsearch 例項,一個 node 就是一個單獨的 server
  • Cluster (叢集):cluster 是多個 node 的集合
  • Shard (分片):資料分片,一個 index 可能會存在於多個 shard

使用

接下來,我們看看如何建立索引、建立文件等,就好比在 MySQL 中進行諸如建立資料庫,插入資料等操作。

新增文件

下面,我們將建立一個儲存電影資訊的 Document:

  • Index 的名稱為 movie
  • Type 為 adventure
  • Document 有兩個欄位:name 和 actors

我們使用 Elasticsearch 提供的 RESTful API 來執行上述操作,如圖所示:

 

 

 

  • 用 url 表示一個資源,比如 /movie/adventure/1
    就表示一個 index 為 movie,type 為 adventure,id 為 1 的 document
  • 用 http 方法操作資源,如使用 GET 獲取資源,使用 POST、PUT 新增或更新資源,使用 DELETE 刪除資源等


檢視所有的索引命令:

curl 'localhost:9200/_cat/indices?v'

 

索引下資料檢視

http get :9200/customer/_search 

 

Elasticsearch 啟動後,也啟動了兩個埠 9200 和 9300:

  • 9200 埠:HTTP RESTful 介面的通訊埠
  • 9300 埠:TCP 通訊埠,用於叢集間節點通訊和與 Java 客戶端通訊的埠

現在,讓我們做一些測試。在瀏覽器訪問連結 http://localhost:9200/ ,或使用 curl 命令: