一、Elasticsearch
Elasticsearch (ES)是一個基于Lucene構建的開源、分布式、RESTful 介面全文搜索引擎,Elasticsearch 還是一個分布式檔案資料庫,其中每個欄位均是被索引的資料且可被搜索,它能夠擴展至數以百計的服務器存盤以及處理PB級的資料,它可以在很短的時間內在儲、搜索和分析大量的資料,它通常作為具有復雜搜索場景情況下的核心發動機,
Elasticsearch就是為高可用和可擴展而生的,可以通過購置性能更強的服務器來完成,
在本專欄的前幾篇文章中我們介紹過ES 6.X 版本的介紹,包括ELK的搭建,感興趣的小伙伴也可以看下本專欄的其他文章,本篇內容我們講解下ES 7.X 版本的使用,該篇文章主要基于RESTful 的方式呼叫ES所提供的API,
截止到目前,ES的版本已到 7.16.2

在開始前可以去官方地址中下載一個ES7.X版本的安裝包,下面是下載地址:
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
從上面的圖片可以看出,現在版本已經到了7.16.2,但我們不適用那么新的,這里我選擇了個比較適中的版本 7.14.0,太新的不一定就是最好的,


這里我們先使用下window版本進行測驗,下篇文章我們講解ES集群的搭建,下載完成后,解壓進入bin下,雙擊elasticsearch.bat 即可啟動ES,


本篇測驗基于PostMan發送Rest Http請求的,
二、索引操作
1. 創建索引
在7.XEs的type已逐漸被淘汰,可以把索引理解為傳統資料庫的表,
向 ES 服務器發 PUT 請求:
http://127.0.0.1:9200/user

如果重復添加索引,會提示錯誤,
2. 查看所有索引
向 ES 服務器發 GET 請求 :
http://127.0.0.1:9200/_cat/indices?v

已經查出剛才添加的索引,
3. 查看單個索引的詳細資訊
向 ES 服務器發 GET 請求 :
http://127.0.0.1:9200/user

已經查出,可以看到更詳細的資訊了,比如上面的分片數和副本數,ES創建索引時不指定分片和副本默認都是1
4. 洗掉索引
向 ES 服務器發 DELETE 請求 :
http://127.0.0.1:9200/user


再次查詢就已經不存在了,
5. 洗掉索引
三、檔案操作
檔案可以理解為關系型資料庫中的表資料,但ES中的資料格式為 JSON 格式,這里先把上面洗掉的索引user 創建好,下面就在user索引中進行演示:

1. 創建檔案
向 ES 服務器發 POST 請求 :
http://127.0.0.1:9200/user/_doc
請求體內容為:
{
"name":"張三",
"age":18,
"sex":"男"
}

由于沒有指定資料唯一性標識(ID),默認情況下,ES 服務器會隨機生成一個,
2. 創建檔案指定ID
向 ES 服務器發 POST 請求 :
http://127.0.0.1:9200/user/_doc/001
請求體內容為:
{
"name":"張三",
"age":18,
"sex":"男"
}

已經是自定義的ID了,
3. 查看檔案
查看檔案時,需要指明檔案的唯一性標識,類似于 MySQL 中資料的主鍵查詢,
向 ES 服務器發 GET 請求 :
http://127.0.0.1:9200/user/_doc/001

4.修改檔案(覆寫)
和新增檔案一樣,輸入相同的 URL 地址請求,如果請求體變化,會將原有的資料內容覆寫,
向 ES 服務器發 POST 請求 :
http://127.0.0.1:9200/user/_doc/001
請求體內容為:
{
"name":"李四",
"age":20,
"sex":"男"
}

再次查詢,可以看到已經修改,

5.修改檔案(修改某個欄位)
上面是一次修改整個檔案,在修改資料時,也可以只修改某一給條資料的區域資訊,
向 ES 服務器發 POST 請求 :
http://127.0.0.1:9200/user/_update/001
請求體內容為:
{
"doc": {
"name":"王五"
}
}

再次查詢,已經修改,

6.洗掉檔案
洗掉一個檔案不會立即從磁盤上移除,它只是被標記成已洗掉(邏輯洗掉),
向 ES 服務器發 DELETE 請求 :
http://127.0.0.1:9200/user/_doc/001

6.根據條件進行洗掉
可以根據條件對多條資料進行洗掉,
向 ES 服務器發 POST 請求 :
http://127.0.0.1:9200/user/_delete_by_query
請求體內容為:
{
"query":{
"match":{
"name":"張三"
}
}
}

顯示了洗掉的條數,
四、映射操作
映射操作,類似于資料庫(database)中的表結構(table),創建資料庫表需要設定欄位名稱,型別,長度,約束等;索引庫也一樣,需要知道這個型別下有哪些欄位,每個欄位有哪些約束資訊,這就叫做映射(mapping),
1. 創建映射
創建映射前需要創建一個新的索引,下面創建user2索引:
向 ES 服務器發 PUT 請求:
http://127.0.0.1:9200/user2
下面再來創建映射,向 ES 服務器發 PUT 請求 :
http://127.0.0.1:9200/user2/_mapping
請求體內容為:
{
"properties": {
"name":{
"type": "text",
"index": true
},
"sex":{
"type": "keyword",
"index": true
},
"age":{
"type": "long",
"index": false
}
}
}

type 表示在ES中的資料型別,其中有:
-
String 型別,又分兩種:
text:可分詞
keyword:不可分詞,資料會作為完整欄位進行匹配 -
Numerical:數值型別,分兩類
基本資料型別:long、integer、short、byte、double、float、half_float
浮點數的高精度型別:scaled_float -
Date:日期型別
-
Array:陣列型別
-
Object:物件
index表示是否索引,默認為 true,也就是說你不進行任何配置,所有欄位都會被索引,true:欄位會被索引,則可以用來進行搜索,false:欄位不會被索引,不能用來搜索
store表示是否將資料進行獨立存盤,默認為 false,原始的文本會存盤在_source 里面,默認情況下其他提取出來的欄位都不是獨立存盤的,是從_source 里面提取出來的,當然你也可以獨立的存盤某個欄位,只要設定"store": true 即可,獲取獨立存盤的欄位要比從_source 中決議快得多,但是也會占用更多的空間,所以要根據實際業務需求來設定,
analyzer表示分詞器,比如 ik 分詞器,
2. 查看映射
向 ES 服務器發 GET 請求 :
http://127.0.0.1:9200/user2/_mapping

3. 索引映射關聯
在創建索引時,就指定映射關聯,
向 ES 服務器發 PUT 請求 :
http://127.0.0.1:9200/user3
請求體內容為:
{
"settings": {},
"mappings": {
"properties": {
"name": {
"type": "text",
"index": true
},
"sex": {
"type": "text",
"index": false
},
"age": {
"type": "long",
"index": false
}
}
}
}


喜歡的小伙伴可以關注我的個人微信公眾號,獲取更多學習資料!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/397587.html
標籤:其他
