天天看點

elasticsearch知識點記錄

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、映射

繼續閱讀