文檔為何物?一個對象 就相當(dāng)于MySQL的一個record記錄
為梓潼等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及梓潼網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、網(wǎng)站制作、梓潼網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
【文檔】
什么是文檔?
程序中大多的實(shí)體或?qū)ο竽軌虮恍蛄谢癁榘I值對的JSON對象,鍵(key)是字段(field)或?qū)傩?property)的名字,值(value)可以是字符串、數(shù)字、布爾類型、另一個對象、值數(shù)組或者其他特殊類型,比如表示日期的字符串或者表示地理位置的對象。
{ "name": "John Smith", "age": 42, "confirmed": true, "join_date": "2014-06-01", "home": { "lat": 51.5, "lon": 0.1 }, "accounts": [ { "type": "facebook", "id": "johnsmith" }, { "type": "twitter", "id": "johnsmith" } ] }
通常,我們可以認(rèn)為對象(object)和文檔(document)是等價相通的。不過,他們還是有所差別:對象(Object)是一個JSON結(jié)構(gòu)體——類似于哈希、hashmap、字典或者關(guān)聯(lián)數(shù)組;對象(Object)中還可能包含其他對象(Object)。 在Elasticsearch中,文檔(document)這個術(shù)語有著特殊含義。它特指最頂層結(jié)構(gòu)或者根對象(root object)序列化成的JSON數(shù)據(jù)(以唯一ID標(biāo)識并存儲于Elasticsearch中)。
文檔元數(shù)據(jù)
一個文檔不只有數(shù)據(jù)。它還包含了元數(shù)據(jù)(metadata)——關(guān)于文檔的信息。三個必須的元數(shù)據(jù)節(jié)點(diǎn)是:
節(jié)點(diǎn)說明
_index文檔存儲的地方
_type文檔代表的對象的類
_id文檔的唯一標(biāo)識
_index
索引(index)類似于關(guān)系型數(shù)據(jù)庫里的“數(shù)據(jù)庫”——它是我們存儲和索引關(guān)聯(lián)數(shù)據(jù)的地方。
提示:
事實(shí)上,我們的數(shù)據(jù)被存儲和索引在分片(shards)中,索引只是一個把一個或多個分片分組在一起的邏輯空間。然而,這只是一些內(nèi)部細(xì)節(jié)——我們的程序完全不用關(guān)心分片。對于我們的程序而言,文檔存儲在索引(index)中。剩下的細(xì)節(jié)由Elasticsearch關(guān)心既可。
我們將會在《索引管理》章節(jié)中探討如何創(chuàng)建并管理索引,但現(xiàn)在,我們將讓Elasticsearch為我們創(chuàng)建索引。我們唯一需要做的僅僅是選擇一個索引名。這個名字必須是全部小寫,不能以下劃線開頭,不能包含逗號。讓我們使用website做為索引名。
_type
在應(yīng)用中,我們使用對象表示一些“事物”,例如一個用戶、一篇博客、一個評論,或者一封郵件。每個對象都屬于一個類(class),這個類定義了屬性或與對象關(guān)聯(lián)的數(shù)據(jù)。user類的對象可能包含姓名、性別、年齡和Email地址。
在關(guān)系型數(shù)據(jù)庫中,我們經(jīng)常將相同類的對象存儲在一個表里,因?yàn)樗鼈冇兄嗤慕Y(jié)構(gòu)。同理,在Elasticsearch中,我們使用相同類型(type)的文檔表示相同的“事物”,因?yàn)樗麄兊臄?shù)據(jù)結(jié)構(gòu)也是相同的。+
每個類型(type)都有自己的映射(mapping)或者結(jié)構(gòu)定義,就像傳統(tǒng)數(shù)據(jù)庫表中的列一樣。所有類型下的文檔被存儲在同一個索引下,但是類型的映射(mapping)會告訴Elasticsearch不同的文檔如何被索引。 我們將會在《映射》章節(jié)探討如何定義和管理映射,但是現(xiàn)在我們將依賴Elasticsearch去自動處理數(shù)據(jù)結(jié)構(gòu)。
_type的名字可以是大寫或小寫,不能包含下劃線或逗號。我們將使用blog做為類型名。
_id
id僅僅是一個字符串,它與_index和_type組合時,就可以在Elasticsearch中唯一標(biāo)識一個文檔。當(dāng)創(chuàng)建一個文檔,你可以自定義_id,也可以讓Elasticsearch幫你自動生成。
其它元數(shù)據(jù)
還有一些其它的元數(shù)據(jù),我們將在《映射》章節(jié)探討。使用上面提到的元素,我們已經(jīng)可以在Elasticsearch中存儲文檔并通過ID檢索——換言說,把Elasticsearch做為文檔存儲器使用了。
其他所有程序語言都可以使用RESTful API,通過9200端口的與Elasticsearch進(jìn)行通信,你可以使用你喜歡的WEB客戶端,事實(shí)上,如你所見,你甚至可以通過curl
命令與Elasticsearch通信。
NOTE
Elasticsearch官方提供了多種程序語言的客戶端——Groovy,Javascript, .NET,PHP,Perl,Python,以及 Ruby——還有很多由社區(qū)提供的客戶端和插件,所有這些可以在文檔中找到。
向Elasticsearch發(fā)出的請求的組成部分與其它普通的HTTP請求是一樣的:
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
VERB HTTP方法:GET
, POST
, PUT
, HEAD
, DELETE
PROTOCOL http或者h(yuǎn)ttps協(xié)議(只有在Elasticsearch前面有https代理的時候可用)
HOST Elasticsearch集群中的任何一個節(jié)點(diǎn)的主機(jī)名,如果是在本地的節(jié)點(diǎn),那么就叫l(wèi)ocalhost
PORT Elasticsearch HTTP服務(wù)所在的端口,默認(rèn)為9200
PATH API路徑(例如_count將返回集群中文檔的數(shù)量),PATH可以包含多個組件,例如_cluster/stats或者_(dá)nodes/stats/jvm
QUERY_STRING 一些可選的查詢請求參數(shù),例如?pretty
參數(shù)將使請求返回更加美觀易讀的JSON數(shù)據(jù)
BODY 一個JSON格式的請求主體(如果請求需要的話)
舉例說明,為了計算集群中的文檔數(shù)量,我們可以這樣做:
curl -XGET 'http://localhost:9200/_count?pretty' -d ' { "query": { "match_all": {} } } '
如:返回所有節(jié)點(diǎn)jvm信息
curl -i 127.0.0.1:9200/_nodes/stats/jvm?pretty
【API-RESTful API】
參考:
http://www.learnes.net/data/README.html
curl 192.168.100.10:9200?preety curl 192.168.100.10:9200/_count?pretty
shell 中的curl的用法
-X 指定請求方法默認(rèn)是 -XGET
-i 返回數(shù)據(jù)的時候,也一并返回請求結(jié)果
-d 發(fā)送的數(shù)據(jù)
查看elk的狀態(tài):
curl 192.168.100.10:9200/_cluster/health?pretty
這個返回值意味著我們的索引請求已經(jīng)被成功創(chuàng)建,其中還包含了_index, _type以及_id的元數(shù)據(jù),以及一個新的元素_version
_index 名詞就是相當(dāng)于數(shù)據(jù)庫中庫
_type 相當(dāng)于數(shù)據(jù)庫中的表
_id 就是id(可以自己指定也以自增)
_index 和 _type 和 _id 三者組成elasticsearch存儲中的數(shù)據(jù)的唯一
創(chuàng)建一條
curl -XPUT 192.168.100.10:9200/website/blog/123 -d '{ "title": "My first blog entry", "text": "Just trying this out...", "date": "2016/01/01" }'
可以看到搜索到了當(dāng)時創(chuàng)建的文檔
[root@master ~]# curl 192.168.100.10:9200/website/blog/123?pretty { "_index" : "website", "_type" : "blog", "_id" : "123", "_version" : 1, "found" : true, "_source" : { "title" : "My first blog entry", "text" : "Just trying this out...", "date" : "2014/01/01" } }
每找到的情況:
[root@master ~]# curl 192.168.100.10:9200/website/blog/1235?pretty { "_index" : "website", "_type" : "blog", "_id" : "1235", "found" : false }
_source 是文檔的內(nèi)容。可以指定值返回文檔指定的字段
[root@master ~]# curl -i -XGET "192.168.100.10:9200/logstash-2016.05.12/syslog/AVSlIBy3bzztddJUaGzh?_source=file,meesage&pretty" HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 Content-Length: 185 { "_index" : "logstash-2016.05.12", "_type" : "syslog", "_id" : "AVSlIBy3bzztddJUaGzh", "_version" : 1, "found" : true, "_source" : { "file" : "/var/log/messages" } }
一次獲取多個文檔_mget
[root@master ~]# curl -i -XGET 192.168.100.10:9200/logstash-2016.05.12/syslog/_mget?pretty -d '{"ids": [ "2", "1"]}' HTTP/1.1 200 OK Content-Type: application/json; charset=UTF-8 Content-Length: 230 { "docs" : [ { "_index" : "logstash-2016.05.12", "_type" : "syslog", "_id" : "2", "found" : false }, { "_index" : "logstash-2016.05.12", "_type" : "syslog", "_id" : "1", "found" : false } ] }
索引多了會積累需要定時刪除比如刪除一個月之前的,(不能使用rm -rf 刪除data下面的索引目錄,因?yàn)閑lk是分布式的你輸出了,其他節(jié)點(diǎn)的復(fù)制分片又會同步過來)
# 刪除indices
curl -XDELETE "http://localhost:9200/access-log-2016.12.02/"
# 刪除多個indices
curl -XDELETE "http://localhost:9200/access-log-2015.12.*/"
網(wǎng)頁題目:增刪改查elasticsearch中的文檔API的使用
文章URL:http://chinadenli.net/article44/geoghe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、服務(wù)器托管、網(wǎng)站策劃、App設(shè)計、網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)