ELK 設置定時清理腳本清理索引
968
2025-03-31
文章目錄
概述
術語
基本用法
創建索引
非結構化創建
結構化創建
官方API文檔
插入
指定文檔id插入(PUT方法)
指定生成文檔id插入 (POST方法)
修改
直接修改文檔
腳本修改文檔
刪除
刪除Document 文檔
刪除 index 索引
查詢
概述
有時候對象不僅僅只是簡單的鍵值列表, 更多時候它擁有復雜的數據結構, 比如包含日期、 地理位置、 另一個對象或者數組。
將這些數據保存到由行和列組成的關系數據庫中, 就好像是把一個豐富的對象拆散了放入一個非常大的表格中:你不得不拆散對象以適應表模式(通常一列表示一個字段) , 然后又不得不在查詢的時候重建它們。
elasticsearch是面向文檔(document oriented)的, 這意味著它可以存儲整個對象或文檔即document
然而它不僅僅是存儲, 還會索引(index)每個文檔的內容使之可以被搜索
在elasticsearch中, 你可以對文檔(而非成行成列的數據) 進行索引、 搜索、 排序、 過濾。這也是Elasticsearch能夠執行復雜的全文搜索的原因之一
Elasticsearch使JSON 作為文檔序列化格式。
術語
索引:含有相同屬性的文檔集合 ,相當于關系型數據庫中的database
類型:索引可以定義一個或多個類型,文檔必須屬于一個類型,相當于table
文檔:文檔是可以被索引的基本數據單位 ,相當于一條記錄
Elasticsearch -> Indexes-> Types -> Documents -> Fields Relational DB -> Databases -> Tables -> Rows -> Columns
1
2
和索引相關的有“分片”和“備份”
分片:每個索引都有多個分片,每個分片是一個Lucene索引
假如一個索引數據量很大,就會產生硬盤壓力很大。所以就要‘分片’來分擔壓力??梢运降臄U展和拆分以及分布式的操作,可以提高搜索和其他操作
備份:拷貝一份分片就完成了分片的備份
當一個主分片失敗或出現問題時,"備份分片"就可以代替工作,從而提高了ES的可用性,備份的分片還可以執行搜索的操作,來分攤搜索的壓力。
ES創建索引時默認創建5個分片一個備份 , 分片的數量只能在創建索引時指定,備份可以動態修改
索引命名規范:字母小寫,且不含中劃線
基本用法
使用RESTful API, 通過9200端口的與Elasticsearch進行通信
http://
1
HTTP方法:
GET , POST , PUT , HEAD , DELETE
1
創建索引
非結構化創建
粗線框代表主分片,對應的相同數字的細線框則代表備份,我們創建book索引的時候,默認5個分片(0,1,2,3,4) 以及一個備份 ,如上所示。
怎么確定是非結構化的呢?
結構化的關鍵詞 mappings,為空說明為非結構化,并沒有結構映射的信息。
結構化創建
{ "novel": { "properties": { "title": { "type": "text" } } } }
1
2
3
4
5
6
7
8
9
點擊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":{ } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
時間格式 epoch_millis為時間戳格式
body為json格式, 請求方法為put , 請求url為 http://localhost:9200/people
返回結果:
{ "acknowledged": true, "shards_acknowledged": true, "index": "people" }
1
2
3
4
5
6
通過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" }
1
2
3
4
5
6
7
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”:{ 需要修改的信息 }
1
2
3
4
5
head插件查看修改后的數據
腳本修改文檔
{ "script":{ "lang":"painless", "inline":"ctx._source.age += 10" } }
1
2
3
4
5
6
7
或者,將參數放在外面指定,比如
{ "script":{ "lang":"painless", "inline":"ctx._source.age = params.age", "params":{ "age":99 } } }
1
2
3
4
5
6
7
8
9
10
刪除
刪除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 JSON
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。