1、基于http協定,以json為資料互動格式的RESTful API
其他所有程式語言都可以使用RESTful API,通過9200端口的與Elasticsearch進行通信,你可以使用你喜歡的WEB用戶端, 事實上,如你所見,你甚至可以通過 curl 指令與Elasticsearch通信
2、
VERB HTTP方法: GET , POST , PUT , HEAD , DELETE
PROTOCOL http或者https協定(隻有在Elasticsearch前面有https代理的時候可用)
HOST Elasticsearch叢集中的任何一個節點的主機名,如果是在本地的節點,那麼就叫localhost
PORT Elasticsearch HTTP服務所在的端口,預設為9200
QUERY_STRING 一些可選的查詢請求參數,例如 ?pretty 參數将使請求傳回更加美觀易讀的JSON資料
BODY 一個JSON格式的請求主體(如果請求需要的話)
3、得到叢集中的文檔數量
curl -XGET -H "Content-Type:application/json" http://localhost:9200/_count?pretty -d '{"query":{"match_all":{}}}'
4、DSL語言:DSL(Domain Specific Language特定領域語言)
5、Elasticsearch緻力于隐藏分布式系統的複雜性。以下這些操作都是在底層自動完成的:
将你的文檔分區到不同的容器或者分片(shards)中,它們可以存在于一個或多個節點中。
将分片均勻的配置設定到各個節點,對索引和搜尋做負載均衡。
備援每一個分片,防止硬體故障造成的資料丢失。
将叢集中任意一個節點上的請求路由到相應資料所在的節點。
無論是增加節點,還是移除節點,分片都可以做到無縫的擴充和遷移。
6、空叢集
一個節點(node)就是一個Elasticsearch執行個體,而一個叢集(cluster)由一個或多個節點組成,它們具有相同的 cluster.name , 它們協同工作,分享資料和負載。當加入新的節點或者删除一個節點時,叢集就會感覺到并平衡資料。
叢集中一個節點會被選舉為主節點(master),它将臨時管理叢集級别的一些變更,例如建立或删除索引、增加或移除節點等。 主節點不參與文檔級别的變更或搜尋,這意味着在流量增長的時候,該主節點不會成為叢集的瓶頸。任何節點都可以成為主 節點。我們例子中的叢集隻有一個節點,是以它會充當主節點的角色。
7、叢集狀态三種:green,yellow,red
顔色 意義
green 所有主要分片和複制分片都可用
yellow 所有主要分片可用,但不是所有複制分片都可用
red 不是所有的主要分片都可用
8、索引:索引隻是一個用來指向一個 或多個分片(shards)的“邏輯命名空間(logical namespace)”.
9、文檔:通常,我們可以認為對象(object)和文檔(document)是等價相通的。不過,他們還是有所差别:對象(Object)是一個JSON結 構體——類似于哈希、hashmap、字典或者關聯數組;對象(Object)中還可能包含其他對象(Object)。 在Elasticsearch中,文 檔(document)這個術語有着特殊含義。它特指最頂層結構或者根對象(root object)序列化成的JSON資料(以唯一ID辨別并 存儲于Elasticsearch中)。
10、文檔中繼資料:一個文檔不隻有資料。它還包含了中繼資料(metadata)——關于文檔的資訊。三個必須的中繼資料節點是:
節點 說明
_index 文檔存儲的地方 -------------類似于關系資料庫裡的資料庫
_type 文檔代表的對象的類 -------------類似于資料庫中的表
_id 文檔的唯一辨別
11、id:id僅僅是一個字元串,它與 _index 和 _type 組合時,就可以在ELasticsearch中唯一辨別一個文檔。當建立一個文檔,你可以 自定義 _id ,也可以讓Elasticsearch幫你自動生成。
12、修改文檔必須重建索引,elasticsearch标記舊文檔,添加一個新的,_version增加,删除文檔:delete /index/type/id
13、_mget允許一次性檢索多個文檔
14、bulk請求: bulk API允許我們使用單一請求來實作多個文檔 的 create 、 index 、 update 或 delete 。這對索引類似于日志活動這樣的資料流非常有用,它們可以以成百上千的資料為一 個批次按序進行索引。
行為 解釋
create 當文檔不存在時建立之。詳見《建立文檔》
index 建立新文檔或替換已有文檔。見《索引文檔》和《更新文檔》
update 局部更新文檔。見《局部更新》
delete 删除一個文檔。見《删除文檔》
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }} { "title": "My first blog post" }
15、bulk請求是這樣
POST /_bulk
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title": "My first blog post" }
{ "index": { "_index": "website", "_type": "blog" }}
{ "title": "My second blog post" }
{ "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }
{ "doc" : {"title" : "My updated blog post"} }
16、分布式文檔的存儲
repliaction:複制預設的值是 sync 。這将導緻主分片得到複制分片的成功響應後才傳回
consistency:預設主分片在嘗試寫入時需要規定數量(quorum)或過半的分片(可以是主節點或複制節點)可用。這是防止資料被寫入到錯 的網絡分區。規定的數量計算公式如下:
17、映射