1. 程式人生 > >007-elasticsearch【一】概述、Elasticsearch 訪問方式、Elasticsearch 面向文檔、常用概念

007-elasticsearch【一】概述、Elasticsearch 訪問方式、Elasticsearch 面向文檔、常用概念

rep ati -- 結構化 沒有 class 標識 副本 concepts

一、概述

  Elasticsearch 是一個開源的搜索引擎,建立在一個全文搜索引擎庫 Apache Lucene™ 基礎之上。

  Elasticsearch 也是使用 Java 編寫的,它的內部使用 Lucene 做索引與搜索,但是它的目標是使全文檢索變得簡單, 通過隱藏 Lucene 的復雜性,取而代之的提供一套簡單一致的 RESTful API。

然而,Elasticsearch 不僅僅是 Lucene,並且也不僅僅只是一個全文搜索引擎。 它可以被下面這樣準確的形容:

  一個分布式的實時文檔存儲,每個字段 可以被索引與搜索
  一個分布式實時分析搜索引擎
  能勝任上百個服務節點的擴展,並支持 PB 級別的結構化或者非結構化數據

  Elasticsearch 將所有的功能打包成一個單獨的服務,這樣你可以通過程序去訪問它提供的簡單的 RESTful API 服務, 不論你是使用自己喜歡的編程語言還是直接使用命令行(去充當這個客戶端)。

二、Elasticsearch 訪問方式

2.1、Java API

如果你正在使用 Java,在代碼中你可以使用 Elasticsearch 內置的兩個客戶端:

節點客戶端(Node client)
  節點客戶端作為一個非數據節點加入到本地集群中。換句話說,它本身不保存任何數據,但是它知道數據在集群中的哪個節點中,並且可以把請求轉發到正確的節點。
傳輸客戶端(Transport client)

  輕量級的傳輸客戶端可以可以將請求發送到遠程集群。它本身不加入集群,但是它可以將請求轉發到集群中的一個節點上。
兩個 Java 客戶端都是通過 9300 端口並使用本地 Elasticsearch 傳輸 協議和集群交互。集群中的節點通過端口 9300 彼此通信。如果這個端口沒有打開,節點將無法形成一個集群。

  Java 客戶端作為節點必須和 Elasticsearch 有相同的 主要 版本;否則,它們之前將無法互相理解。

更多客戶端信息訪問

2.2、RESTful API with JSON over HTTP

  所有其他語言可以使用 RESTful API 通過端口 9200 和 Elasticsearch 進行通信,你可以用你最喜愛的 web 客戶端訪問 Elasticsearch 。事實上,正如你所看到的,你甚至可以使用 curl 命令來和 Elasticsearch 交互。

三、Elasticsearch 面向文檔

  Elasticsearch 是 面向文檔 的,意味著它存儲整個對象或 文檔_。Elasticsearch 不僅存儲文檔,而且 _索引每個文檔的內容使之可以被檢索。在 Elasticsearch 中,你 對文檔進行索引、檢索、排序和過濾--而不是對行列數據。這是一種完全不同的思考數據的方式,也是 Elasticsearch 能支持復雜全文檢索的原因。

3.1、內部json化

  Elasticsearch 使用 JavaScript Object Notation 或者 JSON 作為文檔的序列化格式。JSON 序列化被大多數編程語言所支持,並且已經成為 NoSQL 領域的標準格式。 它簡單、簡潔、易於閱讀。

四、常用概念

4.1、near realtime【NRT】

  Elasticsearch是一個接近實時的搜索平臺。這意味著從索引文檔的時間到可搜索的時間之間存在輕微的延遲(通常為一秒)。

4.2、Cluster集群

  群集是一個或多個節點(服務器)的集合。集群由默認名稱為“elasticsearch”的唯一名稱標識。此名稱很重要,因為如果節點設置為通過名稱加入群集,則節點只能成為群集的一部分。

4.3、Node節點

  節點是屬於集群一部分的單個服務器,存儲數據並參與集群的索引和搜索功能。

4.4、Index索引【相當於關系DB中的數據庫】

  索引是一些具有相似特征的文檔集合。例如,您可以擁有客戶數據的索引,產品目錄的另一個索引以及訂單數據的另一個索引。索引由名稱(必須全部為小寫)標識,並且此名稱用於在對其中的文檔執行索引,搜索,更新和刪除操作時引用索引。

  在單個群集中,您可以根據需要定義多個索引。

4.5、Type類型【相當於關系DB中的數據表】

  在索引內,您可以定義一個或多個類型。類型是您的索引的邏輯類別/分區,其語義完全取決於您。通常,為具有一組公共字段的文檔定義類型。

4。6、Document文檔【相當於關系DB中的數據行】

  文檔是可被索引的基本信息單位。例如,您可以為單個客戶提供文檔,為單個產品提供另一個文檔,為單個訂單提供另一個文檔。文檔以JSON(JavaScript Object Notation)表示。

  在索引/類型中,您可以根據需要存儲任意數量的文檔。請註意,盡管文檔實際上駐留在索引中,但實際上文檔必須被索引/分配給索引內的類型。

4.7、分片和副本

  參看地址:查看

007-elasticsearch【一】概述、Elasticsearch 訪問方式、Elasticsearch 面向文檔、常用概念