es筆記一之es安裝與介紹
本文首發于公眾號:Hunter后端
原文鏈接:es筆記一之es安裝與介紹
首先介紹一下 es,全名為 Elasticsearch,它定義上不是一種數據庫,是一種搜索引擎。
我們可以把海量數據都放到 es 里然后提供搜索操作,但是 MySQL 也同樣可以提供搜索,為什么要用 es 呢?
一個是因為它搜索快,使用倒排索引的方式將數據分詞之后存儲數據,查詢的時候直接根據搜索關鍵詞找到相關數據。
另一個是因為它可以提供一些 MySQL 做不到或者比較耗時的模糊搜索,這個我們后續再介紹。
1、es 和 kibana 的安裝
es 和 kibana 的安裝這里可以直接看我之前的一篇博客文章,講的很詳細,或者去官網找相應的安裝步驟。
這里我們使用的是 7.6.0 版本。
kibana 是一個界面工具,可以用于在瀏覽器界面直接操作 es。
2、es 層級和結構介紹
首先,我們進入 kibana 界面,創建一條數據,然后根據這條數據來介紹 es 中結構的層級關系。
進入 kibana 的輸入界面,輸入:
PUT /customer/_doc/1
{
"name": "John Doe"
}
點擊 PUT 命令同行右邊的三角形,或者按住 ctrl + enter 確認,我們就完成了一次數據的創建。
然后輸入下面的命令查看這條數據的詳情:
GET /customer/_doc/1
通過數據的存儲和查看,我們可以差不多了解 es 中數據的操作方式是 restful 風格的,可以通過 GET、PUT、POST、DELETE 的方式來實現數據的增刪改查。
然后看一下我們通過 GET 方式獲得的數據情況,如下:
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"name" : "John Doe"
}
}
在這個數據結構中,有一些東西是可以和 MySQL 等數據庫的結構對應起來的,比如 index 對應 MySQL 中的 database,type 對應 MySQL 中的 table,而 source 中的數據則對應于 MySQL 中一條條的數據。
但是 es 中 source 中的這些字段,比如 name,可以不預先定義,也可以預先定義,這一點不同于 MySQL,es 甚至可以直接寫入值,es 會自動為其找到對應的字段屬性從而定義。
比如我們前面 PUT 的這條數據,查看 customer 這個數據庫 index 的結構,可以看到 es 根據值為其自動創建了屬性為 keyword。(es 中字段的各個屬性我們后面再介紹)
怎么查看 es 中 index 各個字段的屬性呢,比如 customer,如下操作:
GET /customer/_mapping
index 和 type 也一樣,如果創建數據的時候不存在,那么 es 也會自動為我們創建相應的層級結構。
3、es 字段介紹
es 中的字段類型挺多的,一般計算機語言有的 es 中也有。
keyword
常用于存儲結構化內容,比如email地址,電話號碼,名稱等等
text
文本類型,常用于保存大段文本,然后可以進行分詞搜索等操作
integer
整數
long
浮點型數據
date
日期格式,比如 '2022-01-01 12:00:00'
boolean
布爾型,true/false
數組
es 中沒有單獨的數組類型,但是當我們確定將某個字段作為數組之后,可以直接將其作為數組使用,但是添加的元素必須是相同的,這個我們后面再介紹。
上面這些字段的含義和使用,這里只是做一個簡單的介紹,后面尤其是和 Python 連接使用的時候,我們再對其使用方法做具體詳細的介紹。
4、數據準備
在接下來的筆記中,我們將介紹 es 中各種搜索操作,在此之前,我們這里需要手動寫入一批數據,具體操作如下。
首先我們去獲取一個數據文件,那上面有一批供我們查詢使用的數據,這個文件之前在官方文檔提供的 github 地址,我去看了下,已經不存在了,所以這里我截取一批數據還是放到名為 accounts.json 文檔里,文檔等會兒我放在文章末尾,可供拷貝。
我們將這個文件放在某個目錄下,然后當前目錄執行下面的語句導入到我們在本地啟動的 es 中:
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
然后進入 kibana,查看所有數據庫,可以看到已經多了一個名為 bank 的數據庫:
GET /_cat/indices
這是 json 文件的地址:accounts.json
下一篇筆記我們開始介紹 es 的搜索。
如果想獲取更多后端相關文章,可掃碼關注閱讀:


浙公網安備 33010602011771號