當前位置:編程學習大全網 - 源碼下載 - elasticsearch5.2.2怎麽用java api創建索引

elasticsearch5.2.2怎麽用java api創建索引

壹、ElasticSearch是什麽?

ElasticSearch是壹個基於Lucene的搜索服務器。它提供了壹個分布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發布,是第二流行的搜索引擎。能夠達到實時搜索,穩定,可靠,快速,安裝使用方便,零配置和完全。

我們先說說ES的基本概念。

1、索引(Index)

ES將數據存儲於壹個或多個索引中,索引是具有類似特性的文檔的集合。類比傳統的關系型數據庫領域來說,索引相當於SQL中的壹個數據庫,或者壹個數據存儲方案(schema)。

索引由其名稱(必須為全小寫字符)進行標識,並通過引用此名稱完成文檔的創建、搜索、更新及刪除操作。壹個ES集群中可以按需創建任意數目的索引。

2、類型(Type)

類型是索引內部的邏輯分區(category/partition),然而其意義完全取決於用戶需求。因此,壹個索引內部可定義壹個或多個類型(type)。壹般來說,類型就是為那些擁有相同的域的文檔做的預定義。

例如,在索引中,可以定義壹個用於存儲用戶數據的類型,壹個存儲日誌數據的類型,以及壹個存儲評論數據的類型。類比傳統的關系型數據庫領域來說,類型相當於“表”。

3、文檔(Document)

文檔是Lucene索引和搜索的原子單位,它是包含了壹個或多個域的容器,基於JSON格式進行表示。

文檔由壹個或多個域組成,每個域擁有壹個名字及壹個或多個值,有多個值的域通常稱為“多值域”。每個文檔可以存儲不同的域集,但同壹類型下的文檔至應該有某種程度上的相似之處。

4、映射(Mapping)

ES中,所有的文檔在存儲之前都要首先進行分析。用戶可根據需要定義如何將文本分割成token、哪些token應該被過濾掉,以及哪些文本需要進行額外處理等。

另外,ES還提供了額外功能,例如將域中的內容按需排序。事實上,ES也能自動根據其值確定域的類型。

5、集群(Cluster)

ES集群是壹個或多個節點的集合,它們***同存儲了整個數據集,並提供了聯合索引以及可跨所有節點的搜索能力。

多節點組成的集群擁有冗余能力,它可以在壹個或幾個節點出現故障時保證服務的整體可用性。

集群靠其獨有的名稱進行標識,默認名稱為“elasticsearch”。節點靠其集群名稱來決定加入哪個ES集群,壹個節點只能屬壹個集群。

如果不考慮冗余能力等特性,僅有壹個節點的ES集群壹樣可以實現所有的存儲及搜索功能。

6、節點(Node)

運行了單個實例的ES主機稱為節點,它是集群的壹個成員,可以存儲數據、參與集群索引及搜索操作。

類似於集群,節點靠其名稱進行標識,默認為啟動時自動生成的隨機Marvel字符名稱。

用戶可以按需要自定義任何希望使用的名稱,但出於管理的目的,此名稱應該盡可能有較好的識別性。

節點通過為其配置的ES集群名稱確定其所要加入的集群。

7、分片(Shard)和副本(Replica)

ES的“分片(shard)”機制可將壹個索引內部的數據分布地存儲於多個節點,它通過將壹個索引切分為多個底層物理的Lucene索引完成索引數據的分割存儲功能,這每壹個物理的Lucene索引稱為壹個分片(shard)。

每個分片其內部都是壹個全功能且獨立的索引,因此可由集群中的任何主機存儲。創建索引時,用戶可指定其分片的數量,默認數量為5個。

ES集群可由多個節點組成,各Shard分布式地存儲於這些節點上。

ES可自動在節點間按需要移動shard,例如增加節點或節點故障時。簡而言之,分片實現了集群的分布式存儲,而副本實現了其分布式處理及冗余功能。

OK,上面把ES相關的基本概念及原理大致說明了下,那麽ES到底是怎麽實現全文檢索的呢?

Elasticsearch實現全文檢索,首先要確定分詞器,ES默認有很多分詞器,可參考官方文檔。了解分詞器主要是怎麽實現的。

壹般中文分詞器使用第三方的ik分詞器、mmsegf分詞器和paoding分詞器,最初可能構建於lucene,後來移植於ES。目前我們在最新版的ES中,使用的是IK分詞。

安裝ik分詞器到elasticsearch很簡單,它有個插件目錄analysis-ik,和壹個配置目錄ik, 分別拷貝到plugins和conf目錄就可以了。

當妳有大量的文本數據時,ES均會將其進行分詞並將這些詞語保存在索引中,當輸入關鍵詞進行查詢時,索引就會起到作用,查找對應的相同的查詢詞,從而實現全文檢索。當然這個過程是很吃內存的哦。

  • 上一篇:交互式前景提取
  • 下一篇:Imdb源代碼
  • copyright 2024編程學習大全網