聲明:本系列(標題含有一,二....)的文章都基于https://es.xiaoleilu.com/010_Intro/25_Tutorial_Indexing.html
ES是什么
Elasticsearch是一個基于Apache Lucene(TM)的開源搜索引擎。無論在開源還是專有領域,Lucene可以被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。
但是,Lucene只是一個庫。想要使用它,你必須使用Java來作為開發語言并將其直接集成到你的應用中,更糟糕的是,Lucene非常復雜,你需要深入了解檢索的相關知識來理解它是如何工作的。
Elasticsearch也使用Java開發并使用Lucene作為其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API
來隱藏Lucene的復雜性,從而讓全文搜索變得簡單。
不過,Elasticsearch不僅僅是Lucene和全文搜索,我們還能這樣去描述它:
- 分布式的實時文件存儲,每個字段都被索引并可被搜索
- 分布式的實時分析搜索引擎
- 可以擴展到上百臺服務器,處理PB級結構化或非結構化數據
而且,所有的這些功能被集成到一個服務里面,你的應用可以通過簡單的RESTful API
、各種語言的客戶端甚至命令行與之交互。
上手Elasticsearch非常容易。它提供了許多合理的缺省值,并對初學者隱藏了復雜的搜索引擎理論。它開箱即用(安裝即可使用),只需很少的學習既可在生產環境中使用。
Elasticsearch在Apache 2 license下許可使用,可以免費下載、使用和修改。
隨著你對Elasticsearch的理解加深,你可以根據不同的問題領域定制Elasticsearch的高級特性,這一切都是可配置的,并且配置非常靈活。
安裝Marvel
Marvel是Elasticsearch的管理和監控工具,在開發環境下免費使用。它包含了一個叫做Sense的交互式控制臺,使用戶方便的通過瀏覽器直接與Elasticsearch進行交互。
Elasticsearch線上文檔中的很多示例代碼都附帶一個View in Sense的鏈接。點擊進去,就會在Sense控制臺打開相應的實例。
安裝Marvel不是必須的,但是它可以通過在你本地Elasticsearch集群中運行示例代碼而增加與此書的互動性。
Marvel是一個插件,可在Elasticsearch目錄中運行以下命令來下載和安裝:
./bin/plugin -i elasticsearch/marvel/latest
你可能想要禁用監控,你可以通過以下命令關閉Marvel:
echo 'marvel.agent.enabled: false' >> ./config/elasticsearch.yml
運行Elasticsearch
Elasticsearch已經準備就緒,執行以下命令可在前臺啟動:
./bin/elasticsearch
啟動后,如果只有本地可以訪問,嘗試修改配置文件 elasticsearch.yml
中network.host
(注意配置文件格式不是以#開頭的要空一格,:后要空一格) 為network.host: 0.0.0.0
如果想在后臺以守護進程模式運行,添加-d
參數。
打開另一個終端進行測試:
curl 'http://localhost:9200/?pretty'
你能看到以下返回信息:
{ "status": 200,
"name": "Shrunken Bones",
"version": { "number": "1.4.0", "lucene_version": "4.10" },
"tagline": "You Know, for Search"
}
這說明你的ELasticsearch集群已經啟動并且正常運行,接下來我們可以開始各種實驗了。
集群和節點
節點(node)是一個運行著的Elasticsearch實例。
集群(cluster)是一組具有相同cluster.name的節點集合,他們協同工作,共享數據并提供故障轉移和擴展功能,當然一個節點也可以組成一個集群。
你最好找一個合適的名字來替代cluster.name
的默認值,比如你自己的名字,這樣可以防止一個新啟動的節點加入到相同網絡中的另一個同名的集群中。
你可以通過修改config
/目錄下的elasticsearch.yml
文件,然后重啟ELasticsearch來做到這一點。當Elasticsearch在前臺運行,可以使用Ctrl+C
快捷鍵終止,或者你可以調用shutdown
API來關閉:
curl -XPOST 'http://localhost:9200/_shutdown'
查看Marvel和Sense
如果你安裝了Marvel(作為管理和監控的工具),就可以在瀏覽器里通過以下地址訪問它:
http://localhost:9200/_plugin/marvel/
你可以在Marvel中通過點擊dashboards,在下拉菜單中訪問Sense開發者控制臺,或者直接訪問以下地址:
http://localhost:9200/_plugin/marvel/sense/