中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ElasticSearch的基本使用

發布時間:2020-07-12 13:53:38 來源:網絡 閱讀:1001 作者:原生zzy 欄目:大數據

1.rest基本介紹

REST全稱Representational State Transfer。是一種軟件的架構風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用于客戶端和服務器交互類的軟件。基于這個風格設計的軟件可以更簡潔,更有層次,更易于實現緩存等機制。其實說白了就是類似HTTP的訪問,和HTTP非常的相似。

rest相關操作有:

 -GET:獲取對象的當前狀態;

 -PUT:改變對象的狀態;

 -POST:創建對象;

 -DELETE:刪除對象;

 -HEAD:獲取頭信息; 

例:

資源

一組資源的URI,比如:http://zzy.com/res/

單個資源的URI,比如:http://z.com/res/123

GET列出URI,以及該資源組中每個資源的詳細信息
獲取指定資源的詳細信息,格式可以自選一個合適的網絡資源媒體類型(json、xml)
PUT使用給定的一組資源替換當前整組資源替換/創建指定資源,并將其追加到相應的資源中
POST在本組資源中創建/追加一個新的資源,該操作往往返回一個新的URL
把指定的資源當做一個資源組,并在其下創建/追加一個新的元素,使其隸屬于當前資源
DELETE刪除整組資源
刪除指定的元素

ES中內置的rest接口:

URL

描述

/index/_search

搜索指定索引下的數據

/_aliases

獲取或操作索引的別名

/index/

查看指定索引的詳細信息

/index/type/

創建或操作類型

/index/_mapping

創建或操作mapping

/index/_setting

創建或操作設置(number_of_shards)

/index/_open

打開指定被關閉的索引

/index/_close

關閉指定索引

/index/_refresh

刷新索引(使新加內容對搜索可見,不保證數據被寫入磁盤)

/index/flush

刷新索引(會觸發Lucene提交)


2.使用CURL去操作ES

    url是利用URL語法在命令行方式下工作的開源文件傳輸工具,使用curl可以簡單實現常見的get/post請求。簡單的認為是可以在命令行下面訪問url的一個工具。在centos的默認庫里面是有curl工具的,如果沒有請yum安裝即可。

 curl的基本操作

    ?  -x 指定http的請求方法 HEAD GET POST PUT DELETE

?  -d 指定要傳輸的數據

?  -H 指定http請求頭信息

(1)創建索引庫

  語法curl -XPUT :9200/index_name/">http://<ip>:9200/index_name/

     :curl -XPUT 'http://test:9200/zzy'

ElasticSearch的基本使用

ElasticSearch的基本使用

 (2)創建索引

curl -H "Content-Type: application/json" -XPOST 'http://test:9200/zzy/info/1' -d '
{"name":"hadoop",
"author":"Doug Cutting",
"core":["hdfs","mr","yarn"],
"last_version":3.0
}'

ElasticSearch的基本使用

ElasticSearch的基本使用

     在這里對初學者小編需要補充幾點:

  • PUT和POST的區別:

    PUT是冪等方法,POST不是。所以PUT用戶更新,POST用于新增比較合適創建操作可以使用POST,也可以使用PUT,區別就在于POST是作用在一個集合資源(/articles)之上的,而PUT操作是作用在一個具體資源之上的(/articles/123),比如說很多資源使用數據庫自增主鍵作為標識信息,這個時候就需要使用PUT了。而創建的資源的標識信息到底是什么,只能由服務端提供時,這個時候就必須使用POST

  • ES創建索引庫和索引的注意點:

    索引庫名稱必須要全部小寫,不能以下劃線開頭,也不能包含逗號。

    *    如果沒有明確指定索引數據的ID,那么es會自動生成一個隨機的ID,需要使用POST參數。

  例:(不指定id)


curl -H "Content-Type: application/json" -XPOST 'http://test:9200/zzy/info/' -d '
{"author" : "Doug Cutting"}'

ElasticSearch的基本使用

    例:(創建全新的數據)

curl -H "Content-Type: application/json"  -XPOST 'http://test:9200/zzy/info/2?op_type=create' -d '
{"name" : "hbase"}'

ElasticSearch的基本使用

ElasticSearch的基本使用

(3)查詢操作

   例1(查詢所有):

curl -XGET   //注意?pretty表示讓出現的json好看一些

ElasticSearch的基本使用

例2:(檢索文檔中的一部分,顯示特定的字段內容

curl -XGET 'http://test:9200/zzy/info/1?_source=name,author&pretty'

ElasticSearch的基本使用

例3:(根據條件查詢

curl -XGET  'http://test:9200/zzy/info/_search?q=name=hadoop&pretty'

ElasticSearch的基本使用

(4)更新操作

    ES可以使用PUT/GET對文檔進行更新,如果指定ID的文檔已經存在,則執行更新操作。

    ES在執行更新操作的時候,首先將舊的文檔標記為刪除狀態,然后添加新的文檔,舊的文檔不會立即消失,但是也無法訪問,ES會繼續添加更多數據的時候在后臺清理已經標記刪除狀態的文檔。

例:(局部更新)

curl -H "Content-Type: application/json" -XPOST http://test:9200/zzy/info/1/_update -d '{
"doc":{"name" : "apache-hadoop"}
}'
//注意:"doc":{"name" : "apache-hadoop"}可以執行更新,也可以執行插入。

ElasticSearch的基本使用

(5)刪除操作

例:(普通刪除,根據id刪除

curl  -XDELETE http://test:9200/zzy/info/2/

注意:

  • 如果文檔存在,es屬性foundtruesuccessful:1_version屬性的值+1

  • 如果文檔不存在,es屬性foundfalse,但是版本值version依然會+1,這個就是內部管理的一部分,有點像svn版本號,它保證了我們在多個節點間的不同操作的順序被正確標記了。

  • 一個文檔被刪除之后,不會立即生效,他只是被標記為已刪除。ES將會在你之后添加更多索引的時候才會在后臺進行刪除。

(6)bulk操作

例:

curl -H "Content-Type: application/json" -XPOST 'http://test:9200/bank/accout/_bulk?pretty' 
--data-binary  "@account.json"

ElasticSearch的基本使用


Bulk會把將要處理的數據載入內存中,所以一次批處理的數據量是有限的,一般建議是1000~5000個文檔,如果你的文檔很大,可以適當減少隊列,大小建議是5~15MB,默認不能超過100M,可以在es的配置文件中修改這個值:http.max_content_length:100mb

3.ES的版本控制

(1)普通數據庫和ES的控制數據讀取的策略:

  普通的關系型數據庫使用的時候是當我們讀取一個數據前先鎖定這一行,然后確保只有讀到數據的這個線程可以修改這一行。ES使用的是(樂觀并發控制),ES不會阻止某一個數據的訪問,如果基礎數據在我們讀取和寫入的間隔中發生了變化,更新就會失敗,這時候由程序來決定如何處理這個沖突,可以是重新讀取更新后的數據,也可能將這個失敗情況直接反饋給用戶。

(2)ES實現版本控制:

//首先得到需要修改的文檔,獲取版本號
curl -XGET http://test:9200/zzy/info/1?pretty

ElasticSearch的基本使用

//然后在執行更新操作的時候把版本傳過去
curl -H "Content-Type: application/json" -XPUT http://test:9200/zzy/info/1?version=2 -d '{
"name":"hadoop","version":4}'  //注意這是個覆蓋操作

ElasticSearch的基本使用

注意如果傳遞的版本號和待更新的文檔的版本號不一致,則會更新失敗

(3)ES外部版本:

    如果數據庫已經存在了版本號,或者是可以代表版本的時間戳,這時就可以在ES的查詢url后面添加version_type=external來使用這個號。版本號碼必須要是大于0小于9223372036854775807(Java中long的最大正值)的整數。并且es在處理外部版本號的時候,它不再檢查_version是否與請求中指定的數值是否相等,而是檢查當前的_version是否比指定的數值小,如果小,則請求成功。

例:

curl -H "Content-Type: application/json"  -XPUT 'http://test:9200/zzy/info/3?version=10&version_type=external' -d '
{"name": "flink"}'

ElasticSearch的基本使用

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

微山县| 南皮县| 吉首市| 包头市| 丰镇市| 朝阳市| 岳普湖县| 石棉县| 张家港市| 武城县| 玉树县| 通许县| 诏安县| 古浪县| 枣庄市| 城口县| 塘沽区| 象山县| 桑日县| 柞水县| 肃北| 成武县| 白水县| 牙克石市| 胶南市| 新龙县| 太原市| 高邮市| 辽阳市| 紫云| 龙陵县| 兰考县| 香河县| 永寿县| 凤阳县| 玉门市| 绍兴县| 呈贡县| 杨浦区| 邛崃市| 舟曲县|