日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch中的document数据格式,简单的集群管理,商品的索引的CRUD操作(学习资料记录)

發布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch中的document数据格式,简单的集群管理,商品的索引的CRUD操作(学习资料记录) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Document數據格式

面向文檔的搜索分析引擎
(1)應用系統的數據結構都是面向對象的,復雜的。
(2)對象數據存儲到數據庫中,只能拆解開來,變為扁平的多張表,每次查詢的時候還得還原回對象格式,相當麻煩。
**(3)**ES是面向文檔的,文檔中存儲的數據結構,與面向對象的數據結構是一樣的,基于這種文檔數據結構,ES可以提供復雜的索引,全文檢索,分析聚合等功能。
**(4)**ES的document用json數據格式來表達。

1.1 下面分析ES中的document格式和數據庫中的表的格式

通常Java中面向對象的Bean如下:

public class Employee {private String email;private String firstName;private String lastName;private EmployeeInfo info;private Date joinDate; }private class EmployeeInfo {private String bio; // 性格private Integer age;private String[] interests; // 興趣愛好}

如果是數據庫存儲,需要兩張表:employee表和employee_info,需要將Employee對象的數據重新拆開來,變成Employee數據和EmployeeInfo數據。其中數據表信息為:

employee表:email,first_name,last_name,join_date,4個字段 employee_info表:bio,age,interests,3個字段;此外還有一個外鍵字段,比如employee_id,關聯著employee表

假設Java我們想做如下操作:

EmployeeInfo info = new EmployeeInfo(); info.setBio("curious and modest"); info.setAge(30); info.setInterests(new String[]{"bike", "climb"});Employee employee = new Employee(); employee.setEmail("zhangsan@sina.com"); employee.setFirstName("san"); employee.setLastName("zhang"); employee.setInfo(info); employee.setJoinDate(new Date());

從上面可以知道在Employee的表中含有info的信息。如果是在ES中,我們需要封裝出如下的結構:

{"email" : "zhangsan@sina.com","first_name" : "san","last_name" : "zhang","info" : {"bio" : "curious and modes","age" : 30,"interests": [ "bike", "climb" ]},"join_data" : "2017/01/01" }

從上面的例子中,就可以明白es的document數據格式和數據庫的關系型數據格式的區別。

2.電商網站商品管理案例背景介紹

有一個電商網站,需要為其基于ES構建一個后臺系統,提供一下功能:
(1)對商品信息進行CRUD(增刪改查)操作。
(2)執行簡單的結構化查詢。
(3)可以執行簡單的全文檢索,以及復雜的phrase(短語)檢索。
(4)對全文檢索的結果,可以進行高亮顯示。
(5)對數據進行簡單的聚合分析。

3.簡單的集群管理:

(1)快速檢查集群的健康狀況
ES提供了一套api,叫做cat api,可以查看ES中各種各樣的數據。

檢查集群的健康狀態:
在Kibana的DevTools中輸入:GET /_cat/health?v,效果如下:


注意:上面的status是yellow的。
當啟動了另外一個ES后(復制一個ES的安裝文件,文件夾重命名一下,然后再雙擊一下D:\installed\elasticsearch\elasticsearch-5.2.0.2\bin\elasticsearch.bat)

進入kibana的DevTools,然后再執行一下:GET /_cat/health?v

epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1500611289 12:28:09 elasticsearch green 2 2 12 6 0 0 0 0 - 100.0%

(2)如何快速了解集群的健康狀況?green、yellow、red?
green:每個索引的primary shard和replica shard都是active狀態的。
yellow:每個索引的primary shard都是active狀態的,但是部分replica shard不是active狀態,處于不可用的狀態。
red:不是所有索引的primary shard都是active狀態的,部分索引有數據丟失了。

(3)只有一個ES的時候,處于yellow狀態的原因是啥?
現在就一個筆記本電腦,啟動了一個ES進程,相當于就只有一個node?,F在ES中有一個index,就是kibana自己內置建立的index。由于默認的配置是給每個index分配5個primary shard和5個replica shard。而且primary shard和replica shard不能在同一臺機器上(為了容錯)?,F在kibana自己建立的index是1個primary shard和1個replica shard.當前就一個node,所以只有1個primary shard被分配了和啟動了。
(4)快速查看集群中有哪些索引

GET /_cat/indices?v結果是: health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open ecommerce 4kSE52b0TLGJ1Ss4fDGBnQ 5 1 1 0 6.2kb 6.2kb yellow open .kibana pGkQqwXUT4-nEY3EXPT-rg 1 1 1 0 3.1kb 3.1kb

(5)簡單的索引操作
創建索引:PUT /test_index?pretty
執行完成之后,返回結果:

{"acknowledged": true,"shards_acknowledged": true }

查看索引:
GET /_cat/indices?v

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open ecommerce 4kSE52b0TLGJ1Ss4fDGBnQ 5 1 1 0 6.2kb 6.2kb yellow open .kibana pGkQqwXUT4-nEY3EXPT-rg 1 1 1 0 3.1kb 3.1kb yellow open test_index NKZYw_dyQtO6p0mu479D9w 5 1 0 0 650b 650b

從上面可以看出增加了一個test_index索引。
(6)刪除索引
DELETE /test_index?pretty
運行后返回的結果集是:

{"acknowledged": true }

再次查詢結果,結果如下:

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size yellow open ecommerce 4kSE52b0TLGJ1Ss4fDGBnQ 5 1 1 0 6.2kb 6.2kb yellow open .kibana pGkQqwXUT4-nEY3EXPT-rg 1 1 1 0 3.1kb 3.1kb

4、商品的CRUD操作

(1)新增商品:新增文檔,建立索引

PUT /index/type/id {"json數據" } PUT /ecommerce/product/1 {"name" : "gaolujie yagao","desc" : "gaoxiao meibai","price" : 30,"producer" : "gaolujie producer","tags": [ "meibai", "fangzhu" ] }

執行之后,在右側的kibana顯示的效果如下:

{"_index": "ecommerce","_type": "product","_id": "1","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"created": true }

新增第二條索引:

PUT /ecommerce/product/2 {"name" : "jiajieshi yagao","desc" : "youxiao fangzhu","price" : 25,"producer" : "jiajieshi producer","tags": [ "fangzhu" ] }PUT /ecommerce/product/3 {"name" : "zhonghua yagao","desc" : "caoben zhiwu","price" : 40,"producer" : "zhonghua producer","tags": [ "qingxin" ] }

es會自動建立index和type,不需要提前創建,而且es默認會對document每個field都建立倒排索引,讓其可以被搜索

(2)查詢商品:檢索文檔

GET /index/type/id GET /ecommerce/product/1{"_index": "ecommerce","_type": "product","_id": "1","_version": 1,"found": true,"_source": {"name": "gaolujie yagao","desc": "gaoxiao meibai","price": 30,"producer": "gaolujie producer","tags": ["meibai","fangzhu"]} }

(3)修改商品:替換文檔

PUT /ecommerce/product/1 {"name" : "jiaqiangban gaolujie yagao","desc" : "gaoxiao meibai","price" : 30,"producer" : "gaolujie producer","tags": [ "meibai", "fangzhu" ] }

如果是創建,執行完成之后,kibana的右側出現的內容是:

{"_index": "ecommerce","_type": "product","_id": "1","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"created": true }

如果是修改,kibana的右側出現下面的內容:

{"_index": "ecommerce","_type": "product","_id": "1","_version": 2,"result": "updated","_shards": {"total": 2,"successful": 1,"failed": 0},"created": false } PUT /ecommerce/product/1 {"name" : "jiaqiangban gaolujie yagao" }

替換方式有一個不好,即使必須帶上所有的field,才能去進行信息的修改

(4)修改商品:更新文檔

POST /ecommerce/product/1/_update {"doc": {"name": "jiaqiangban gaolujie yagao"} }

執行之后,顯示在右邊的內容如下:

{"_index": "ecommerce","_type": "product","_id": "1","_version": 8,"result": "updated","_shards": {"total": 2,"successful": 1,"failed": 0} }

然后再:GET /ecommerce/product/1,發現只有指定field中的內容發生了變化。

我的風格,其實有選擇的情況下,不太喜歡念ppt,或者照著文檔做,或者直接粘貼寫好的代碼,盡量是純手敲代碼

(5)刪除商品:刪除文檔

DELETE /ecommerce/product/1{"found": true,"_index": "ecommerce","_type": "product","_id": "1","_version": 9,"result": "deleted","_shards": {"total": 2,"successful": 1,"failed": 0} }

刪除后,kibana的右側顯示的內容如下:

{"_index": "ecommerce","_type": "product","_id": "1","found": false }

再重新創建回來,創建方式是:

PUT /ecommerce/product/1 {"name":"jiaqiangban gaoluejie yagao","desc":"gaoxiao meibai","price":30,"producer":"gaolujie producer","tags":["meibai","fangzhu"] }

總結

以上是生活随笔為你收集整理的Elasticsearch中的document数据格式,简单的集群管理,商品的索引的CRUD操作(学习资料记录)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女高潮在线 | 国内自拍2020 | 免费福利视频在线观看 | 四虎一国产精品一区二区影院 | 偷偷久久 | 成人国产精品免费 | 91欧美日韩麻豆精品 | 天天躁日日躁狠狠躁 | 色吊丝av中文字幕 | 欧美色吊丝 | caoprom在线| 火影忍者羞羞漫画 | 国产绳艺sm调教室论坛 | 99久久久国产精品无码网爆 | 亚洲精品高清在线观看 | 在线观看亚洲国产 | www.日本在线视频 | 黑人精品一区二区三区不 | av黄色影院| 一级做a爱片 | 国产精品99久久久久久久久久久久 | 日韩视频在线观看二区 | 老熟妇仑乱一区二区视频 | 依依综合网 | 97狠狠操| 亚日韩| 大尺度做爰啪啪床戏 | jizz内谢中国亚洲jizz | 97精品国产露脸对白 | 欧美人与禽猛交乱配视频 | 久久96 | 日本在线不卡一区 | 天天成人 | 天天干天天操天天 | 夜夜爽av| 欧美成人三级伦在线观看 | 精品免费久久久 | 精品日日夜夜 | 凹凸视频一区二区 | 午夜视频在线免费 | 一区二区av电影 | www.av小说| 国产aa毛片| 日韩三区在线观看 | 亚洲永久免费精品 | av手机网站| 亚洲人成免费电影 | 久久网站免费观看 | 五月天色婷婷综合 | 国产av国片精品 | 91精品国产乱码久久久久久久久 | 久久777| 欧美高h| 国产成人精品a视频一区 | 91新视频 | 欧美特级黄色大片 | 免费黄色小视频在线观看 | 91福利视频免费观看 | 北条麻妃一区二区三区四区五区 | 黄色三级视频在线观看 | 日韩精品二区在线观看 | 久久奇米| 久久只有这里有精品 | 亚洲精品永久免费 | 国产a一区 | 国产午夜三级 | 手机看片1024国产 | 中文字幕日本人妻久久久免费 | 好吊妞视频在线观看 | 免费成人美女女 | 亚洲欧美成人一区二区三区 | 波多野结衣视频网址 | 日本人dh亚洲人ⅹxx | 岛国二区三区 | 日本人体视频 | 欧美色婷婷| 亚洲日本香蕉视频 | 爱情岛成人 | 国产一区二区三区在线观看 | 456亚洲影院 | 久久久噜噜噜www成人 | 日本精品一区二区视频 | 国产精品羞羞答答在线观看 | 告诉我真相俄剧在线观看 | 东京干手机福利视频 | 国产精品99无码一区二区 | 亚洲成人a∨ | 日韩在线中文字幕视频 | 天天摸天天做天天爽水多 | 韩日欧美| 色无极亚洲影院 | 国产一区二区在线免费观看 | 婷婷亚洲天堂 | 天天看夜夜爽 | 国产精品1| 很黄很污的视频 | 青青草91| 国产69精品麻豆 | 亚洲国产成人精品女人久久 |