Elasticsearch總體介紹

jopen 9年前發布 | 10K 次閱讀 ElasticSearch 搜索引擎

Elasticsearch就是為高可用和高可擴展而生,可以通過添加更多的服務器來水平擴展。

空集群

  • 主節點(Master Node):集群中的一個結點會被選為主節點,它 負責整個集群的變化 ,比如創建索引或者刪除索引,以及對集群中結點的增加和刪除。主節點不需要參與到文檔級別的變化或者搜索中,這就意味著主節點不會因為流量的增大而成為瓶頸。任何結點都可以成為主節點。

    </li>

  • 我只啟動了一個節點,所以自然這個結點就成為了主節點,因此現在所構建的集群就是一個單節點集群。作為用戶,我可以與集群中的任意一個節點通信,包括主節點。 每個節點都知道文檔在那個節點上,并且它可以轉發請求到相應的結點。我們訪問的結點負責收集各個節點返回的數據,最后一起返回給客戶端 。這一切都由Elasticsearch處理。

    </li> </ul>

    集群健康 (Cluster Health)

    我們在Elasticsearch集群中可以監控很多信息,其中最重要的一項就是集群的健康,集群健康有三種狀態:green,yello,red。

    curl -XGET localhost:9200/_cluster/health?pretty

    如果一個集群中沒有任何索引,返回一下信息:

    {
        "cluster_name": "elasticsearch",
        "status": "green",
        "timed_out": false,
        "number_of_nodes": 1,
        "number_of_data_nodes": 1,
        "active_primary_shards": 0,
        "active_shards": 0,
        "relocating_shards": 0,
        "initializing_shards": 0,
        "unassigned_shards": 0
    }

    當我在集群是上建立了索引后,返回如下信息:

    {
      "cluster_name" : "elasticsearch",
      "status" : "yellow",
      "timed_out" : false,
      "number_of_nodes" : 1,
      "number_of_data_nodes" : 1,
      "active_primary_shards" : 5,
      "active_shards" : 5,
      "relocating_shards" : 0,
      "initializing_shards" : 0,
      "unassigned_shards" : 5
    }

    • green:所有的主要分片(Primary Shard)和復制分片(Replica Shard)都可用

      </li>

    • yellow:所有的主分片都可用,但是并不是所有的復制分片都可用

      </li>

    • red:不是所有的主要分片都可用

      </li> </ul>

      下面介紹分片,包括主分片和復制分片。

      分片 (Shards)

      • 為了將數據添加到ES,我們需要索引(index),在邏輯上,index是存儲數據的地方,而在實際上,index是一個用來 指向一個或者多個分片的的邏輯命名空間

        </li>

      • 一個分片是一個最小級別的“工作單元”,它保存了索引中所有數據的一部分,一個分片是一個Lucene實例,并且 它本身就是一個完整的搜索引擎我們的文檔存儲在分片中,并且在分片中被索引。我們的應用程序不會直接和分片通信,取而代之的是直接和索引通信

        </li>

      • 分片是Elasticsearch在集群中分發數據的關鍵。把分片想象成數據的容器, 文檔存儲在分片中,然后分片分配到你集群中的節點上 。當集群擴容或者縮小,Elasticsearch會自動在節點間遷移分片,使得集群可以保持平衡。

        </li>

      • 分片可以分為 主分片 (primary shard)和 復制分片 (replica shard), 索引中的每個文檔屬于一個單獨的主分片 ,所以主分片的數量決定了索引中最多能夠存儲多少數據。

        </li>

      • 復制分片是主分片的一個副本,用來防止硬件故障導致的數據丟失,同時可以提供讀請求,比如搜索或者從別的shards取回文檔。

        </li>

      • 當索引創建的時候,主分片的數量就確定了,但是復制分片可以隨時調整。

        </li> </ul>

        參考https://github.com/looly/elasticsearch-definitive-guide-cn

        原文 http://segmentfault.com/a/1190000003499675

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!