Elasticsearch-04 ES中的术语和基本用法
文章目錄
- 概述
- 術語
- 基本用法
- 創建索引
- 非結構化創建
- 結構化創建
- 官方API文檔
- 插入
- 指定文檔id插入(PUT方法)
- 指定生成文檔id插入 (POST方法)
- 修改
- 直接修改文檔
- 腳本修改文檔
- 刪除
- 刪除Document 文檔
- 刪除 index 索引
- 查詢
概述
有時候對象不僅僅只是簡單的鍵值列表, 更多時候它擁有復雜的數據結構, 比如包含日期、 地理位置、 另一個對象或者數組。
將這些數據保存到由行和列組成的關系數據庫中, 就好像是把一個豐富的對象拆散了放入一個非常大的表格中:你不得不拆散對象以適應表模式(通常一列表示一個字段) , 然后又不得不在查詢的時候重建它們。
Elasticsearch是面向文檔(document oriented)的, 這意味著它可以存儲整個對象或文檔即document
然而它不僅僅是存儲, 還會索引(index)每個文檔的內容使之可以被搜索
在Elasticsearch中, 你可以對文檔(而非成行成列的數據) 進行索引、 搜索、 排序、 過濾。這也是Elasticsearch能夠執行復雜的全文搜索的原因之一
Elasticsearch使JSON 作為文檔序列化格式。
術語
- 索引:含有相同屬性的文檔集合 ,相當于關系型數據庫中的database
- 類型:索引可以定義一個或多個類型,文檔必須屬于一個類型,相當于table
- 文檔:文檔是可以被索引的基本數據單位 ,相當于一條記錄
和索引相關的有“分片”和“備份”
- 分片:每個索引都有多個分片,每個分片是一個Lucene索引
假如一個索引數據量很大,就會產生硬盤壓力很大。所以就要‘分片’來分擔壓力。可以水平的擴展和拆分以及分布式的操作,可以提高搜索和其他操作
- 備份:拷貝一份分片就完成了分片的備份
當一個主分片失敗或出現問題時,"備份分片"就可以代替工作,從而提高了ES的可用性,備份的分片還可以執行搜索的操作,來分攤搜索的壓力。
-
ES創建索引時默認創建5個分片一個備份 , 分片的數量只能在創建索引時指定,備份可以動態修改
-
索引命名規范:字母小寫,且不含中劃線
基本用法
使用RESTful API, 通過9200端口的與Elasticsearch進行通信
http://<ip>:<port>/<索引>/<類型>/<文檔id>HTTP方法:
GET , POST , PUT , HEAD , DELETE創建索引
非結構化創建
粗線框代表主分片,對應的相同數字的細線框則代表備份,我們創建book索引的時候,默認5個分片(0,1,2,3,4) 以及一個備份 ,如上所示。
怎么確定是非結構化的呢?
結構化的關鍵詞 mappings,為空說明為非結構化,并沒有結構映射的信息。
結構化創建
{"novel": {"properties": {"title": {"type": "text"}}} }
點擊Request,返回成功后,回到overview刷新下索引,查看索引信息如下
在web頁面書寫json沒有提示,很容易出錯,這里我們通過postman來新建一個索引吧
{"settings":{"number_of_shards":3,"number_of_replicas":1},"mappings":{"man":{"properties":{"name":{"type":"text"},"country":{"type":"keyword"},"age":{"type":"integer"},"date":{"type":"date","format":"yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || epoch_millis"}}},"woman":{}} }時間格式 epoch_millis為時間戳格式
body為json格式, 請求方法為put , 請求url為 http://localhost:9200/people
返回結果:
{"acknowledged": true,"shards_acknowledged": true,"index": "people" }通過head插件查看結果,刷新下
查看索引信息如下
官方API文檔
當前版本 7.0 : https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
5.6的版本的: https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html
插入
我們往 people 這個索引中的 man類型里寫入一條數據即文檔
指定文檔id插入(PUT方法)
{"name":"artisan","country":"china","age":18,"date":"2019-04-19" }
PUT 方法
http://localhost:9200/people/man/1 -->" ip:port/索引/類型/文檔id
到head插件中查看下數據
id=1 ,是我們自己指定的
指定生成文檔id插入 (POST方法)
POST 方法
RestFul 請求中僅指定 索引和類型即可,無需指定id,es自動生成id
在head插件中刷新下,通過Brower瀏覽數據如下
修改
直接修改文檔
URL: http://localhost:9200/people/man/1/_update 指定id ,注意后面要跟上“_update”
方法: POST
修改內容
“doc”:{需要修改的信息}head插件查看修改后的數據
腳本修改文檔
{"script":{"lang":"painless","inline":"ctx._source.age += 10"} }或者,將參數放在外面指定,比如
{"script":{"lang":"painless","inline":"ctx._source.age = params.age","params":{"age":99}} }刪除
刪除Document 文檔
URL : http://localhost:9200/people/man/1/ ,刪除id=1的文檔
方法: DELETE
通過head插件查看,剛才id=1的數據已經被刪掉了
刪除 index 索引
方式一: web頁面中刪除
索引被刪除后,索引中的數據將一并被刪除 ,請謹慎操作。
方式二: 通過postman ,
方法: DELETE, url : http://ip:port/index
通過head插件查看
查詢
另開篇介紹,見ElasticSearch-05ElasticSearch之查詢與過濾
總結
以上是生活随笔為你收集整理的Elasticsearch-04 ES中的术语和基本用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Elasticsearch-03 Cen
- 下一篇: Elasticsearch-05Elas