說明:
? ? 本文介紹 ElasticSearch 增加勾邦、刪除、修改的使用示例。通過Restful 接口和 Postman實現(xiàn).ElasticSearch 版本為6.3.2淋昭。
關(guān)于索引的創(chuàng)建請參考:http://www.reibang.com/p/828dce8a99e0
關(guān)于es的安裝請參考:http://www.reibang.com/p/fd5f0101c434
我先創(chuàng)建一個叫l(wèi)ocal_mst_student_idx_1的索引遂黍,通過hand插件觀察他的count條數(shù)為0.(詳細(xì)見下圖)
新增數(shù)據(jù):
單條新增(指定_id):
URL:http://服務(wù)ip:端口/索引index/type/_id
--Post http://127.0.0.1:9200/local_mst_student_idx_1/mst_student/1
json參數(shù):
{ "id":"1", "stu_code":"1A0001", "stu_name":"張三 ", "stu_age":"18", "stu_date":"1528887157717", "stu_bool":"true" }
單條新增(不指定_id):
URL:http://服務(wù)ip:端口/索引index/type
es會自動生成一個唯一的_id
--Post?http://127.0.0.1:9200/local_mst_student_idx_1/mst_student
json參數(shù):
{ "id":"2", "stu_code":"1A0002", "stu_name":"李四", "stu_age":"28", "stu_date":"1528887157717", "stu_bool":"true" }
批量新增:
關(guān)于批量新增我們需要創(chuàng)建一個.json的文件终佛,里面構(gòu)建json數(shù)據(jù)。(如下圖)
{"index":{"_id":"3"}}{"id":"3","stu_code":"1A0003","stu_name":"王五","stu_age":"20","stu_date":"1528887157717","stu_bool":"true"}{"index":{"_id":"4"}}{"id":"4","stu_code":"1A0004","stu_name":"趙六","stu_age":"21","stu_date":"1528887157717","stu_bool":"true"}{"index":{"_id":"5"}}{"id":"5","stu_code":"1A0005","stu_name":"孫七","stu_age":"22","stu_date":"1528887157717","stu_bool":"true"}
通過postman請求:
-- Post http://localhost:9200/local_mst_student_idx_1/mst_student/_bulk?pretty
注意:通過post請求body這時候需要選擇bonary雾家,然后選擇我們剛剛創(chuàng)建的.json文件即可铃彰。(詳細(xì)如下圖)
點擊執(zhí)行我們可能會遇到下面這種情況,那是因為body的類型是text類型的芯咧,它不支持牙捉,我們點擊下拉框改成JSON選項就ok了。
下面我展示一下執(zhí)行批量新增的效果圖:
上面明顯的返回了我們新增的數(shù)據(jù)信息唬党。
(注:批量新增可以在URL中指定index和type也可已在.json文件中指定鹃共;我上面是使用URL指定index和type的,官網(wǎng)文檔案例是在.json文檔中指定驶拱,大家可以參考一下霜浴。)
關(guān)于批量新增有啥疑問的可以參考官方文檔:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
執(zhí)行完后我們通過hand插件觀察Elasticsearch數(shù)據(jù)情況:(如下圖)
很清晰的看出我們新增的數(shù)據(jù)已經(jīng)全部到ES里面。
刪除數(shù)據(jù):
單個刪除:
URL:http://服務(wù)ip:端口號/索引index/type/_id? ?(_id:指定刪除)
--DELETE? http://localhost:9200/local_mst_student_idx_1/mst_student/1/
單個刪除比較簡單:(如下圖)
查詢式刪除:
通過條件查詢刪除某些符合條件的數(shù)據(jù)蓝纲;我們測試把張三和王五刪除掉阴孟。
--POST? http://localhost:9200/local_mst_student_idx_1/mst_student/_delete_by_query?pretty
注意:這里請求中末尾我們使用的是_delete_by_query? API
json參數(shù):
{ "query":{ "bool": { "filter": { "terms": { "_id": ["1","3"] } } } }}
關(guān)于批量刪除有什么疑問的可以參考官方文檔:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete-by-query.html
執(zhí)行成功后觀察數(shù)據(jù)是否被刪除:
修改數(shù)據(jù)1:
ES修改操作有一種特殊晌纫;假如我們使用下圖這種請求
-- POST??http://localhost:9200/local_mst_student_idx_1/mst_student/4?pretty
json參數(shù):
{ "stu_name": "Mack Li"}
通過觀察我指定_id為4的數(shù)據(jù)進(jìn)行修改,他只修改了我傳參的stu_name字段永丝,并把其他字段全部改為空了锹漱。
其實是這樣的:
????當(dāng)我們發(fā)送該請求后,如果不存在_id=4的文檔數(shù)據(jù)慕嚷,索引中將新建一個文檔_id=4哥牍,如果索引中在之前已經(jīng)存在_id=4的文檔數(shù)據(jù),新文檔數(shù)據(jù)將覆蓋歷史文檔數(shù)據(jù)喝检。如果我們存入的文檔id和已存在的文檔id都不相同則不會影響嗅辣。索引文檔時,_id部分是可選的,我們上面也有案例挠说,如果未指定澡谭,es將生成一個隨機(jī)_id,然后用它來創(chuàng)建新文檔损俭。當(dāng)然我可能不想要這種效果蛙奖。別急下面我來講解另外一種修改方式。
修改數(shù)據(jù)2:
這里我們發(fā)現(xiàn)和上面的請求有哪些不同杆兵,我們發(fā)現(xiàn)下面圖片的URL的末尾多了一個_update請求命令.
1.通過doc文檔格式修改
-- POST? http://localhost:9200/local_mst_student_idx_1/mst_student/5/_update?pretty
JSON參數(shù):
{ "doc":{"stu_name": "Mack Zhao","stu_age":"19"}}
2.通過腳本格式修改
-- POST? http://localhost:9200/local_mst_student_idx_1/mst_student/5/_update?pretty
{ "script": "ctx._source.stu_age = 24"}
這種更新其實也不是在原文檔進(jìn)行就地更新雁仲。es無論何時進(jìn)行更新他都會刪除舊文檔,索引一個新文檔來立刻替換它拧咳。當(dāng)然es還提供了多條件的修改伯顶。我們可以參考官方文檔去挖掘在此我就不詳細(xì)的講解了。
關(guān)于es多條件的修改可以參考官方文檔:
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-update-by-query.html
關(guān)于增刪改我們就講到這骆膝,新的探索我會再第一時間給大家分享祭衩。