【ElasticSearch+NetCore 第一篇】在Windows上安裝部署ElasticSearch和ElasticSearch-head


ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。設計用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。

一、下載ElasticSearch

官網下載地址:https://www.elastic.co/cn/downloads/elasticsearch

注意,現在ElasticSearch的最新版本為7.1.1,與6.x版本相比改動較大,但相關資源(穩定的SDK)並沒有更新,所以容易造成問題,所以推薦下載6.8的版本使用。

二、安裝ElasticSearch

新建ElasticSearchService文件夾,在該文件夾內新建node-1和node-2兩個文件夾。將下載到的壓縮包內的文件復制到node1文件夾內。

進入  node-1 > bin  目錄,在該文件夾下 shift+右鍵 打開PowerShell或者Cmd窗口,輸入  elasticsearch.bat  即可。注意,不同的cmd工具輸入的格式可能可能有些出入,比如在powershell中,需要寫成  ./elasticsearch 

回車,等待程序啟動完成。

打開瀏覽器,輸入:http://localshot:9200,可以看到一段json數據,說明elasticsearch已經啟動成功。

三、安裝elasticsearch-head

ElasticSearch-head依賴NodeJs和Grunt,請先安裝好nodejs環境,在此不做贅述。

github地址:https://github.com/mobz/elasticsearch-head

如果已經安裝了git,可以直接使用git命令克隆一份代碼到本地  git clone git://github.com/mobz/elasticsearch-head.git ,沒有安裝也可以手動下載zip包,解壓后,后面的操作是一樣的。

進入elasticsearch-head目錄,運行  npm install ,因為某些原因,使用npm的速度會比較慢,所以建議使用  cnpm  ,如果未安裝,請 參考這里 。安裝完成后,運行 cnpm install,靜等安裝完成即可。

當包全部安裝結束,使用  npm run start  命令啟動 elasticsearch-head

打開瀏覽器,輸入:http://localhost:9100,進入管理界面。

這時,我們發現elasticsearch-head無法連接到服務,這是因為它和elasticsearch的交互是通過ajax來完成的,這里會存在跨域的問題,

解決的方式也很簡單,找到elasticsearch的保存目錄,在config文件夾下使用vscode打開  elasticsearch.yml  文件,在最下方輸入以下代碼:

http.cors.enabled: true
http.cors.allow-origin: "*"

保存,重啟elasticsearch服務,重新打開 http://localhost:9100,連接成功。

四、安裝多個ElasticSearch實例

ElasticSearch原生支持集群功能,配置起來也很簡單,還是上面提到的  elasticsearch.yml   文件,需要添加幾個配置:

  1. 集群名稱【cluster.name】,要添加到集群的所有節點中,這個配置項必須有而且必須一致
  2. 節點名稱【node.name】,當前節點的名稱,這個配置項必須有,而且在集群中必須唯一
  3. 綁定IP【network.host】,服務綁定的ip地址,默認是 127.0.0.1,本地測試時可以省略,生產環境下,必須要有
  4. http端口【http.port】,默認使用9200端口,因為我是在同一台電腦上配置多個節點,所以在這里必須配置一個不同的端口,如果是部署在不同的電腦上,這個可以省略
  5. 服務發現【discovery.zen.ping.unicast.hosts】,這里配置的是集群通訊用的端口,默認是9300,如果實在多台機器上部署節點,那端口號可以省略,但如果在同一台機器上部署多個節點,需要指定端口號,默認會自動往后排 9301,9302...

OK,下面實際操作一下,停止node-1的服務,把文件拷貝一份到node-2文件夾。

分別打開相應目錄下的 config > elasticsearch.yml文件,添加上面說到的配置項,最終的配置如下:

http.cors.enabled: true
http.cors.allow-origin: "*"

cluster.name: taoxue
node.name: node-1

network.host: 127.0.0.1 http.port:
9200 discovery.zen.ping.unicast.hosts: ["127.0.0.1:9200", "127.0.0.1:9201"]
http.cors.enabled: true
http.cors.allow-origin: "*"

cluster.name: taoxue
node.name: node-2
 
network.host: 127.0.0.1
http.port: 9201
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301"]

OK,分別啟動這兩個節點,在瀏覽器中打開 http://localhost:9200 和 http://localhost:9201,發現已經應用了我們的剛剛的配置。

這里注意下,如果你下載的是 7.x 版本的,集群配置稍有不同,這里我也貼一下在一台電腦上開多個節點的配置文件,但還是那句話,不建議使用7.x的版本,因為后面會有很多坑。

http.cors.enabled: true
http.cors.allow-origin: "*"

cluster.name: taoxue
node.name: node-1

http.port: 9200
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
http.cors.enabled: true
http.cors.allow-origin: "*"

cluster.name: taoxue
node.name: node-2

http.port: 9201
cluster.initial_master_nodes: ["node-1","node-2","node-3"]

五、添加中文分詞器插件 ElasticSearch-IK

github地址:https://github.com/medcl/elasticsearch-analysis-ik/

下載已經打包好的release包,注意要跟我們安裝的ElasticSearch的版本一致。我安裝的6.8.1版本,這里沒有對應的IK版本,那就不管,找大版本最近的6.8.0。

下載完成以后,打開ElasticSearch的目錄的plugins文件夾,新建一個文件夾命名為ik,把壓縮包的內容拷貝進去。

啟動ElasticSearch服務,發現無法運行,大概的意思是插件IK是基於6.8.0構建的,而現在運行的是6.8.1版本。不要慌,在剛才的ik文件夾內找到一個名為  plugin-descriptor.properties  的文件,用vscode打開,直接滾動到最后一行, elasticsearch.version=6.8.0 ,把這里的 6.8.0 改成 6.8.1,保存,然后重新啟動服務,可以發現,可以正常啟動了。

 

至此,elasticsearch的安裝就結束了,下一篇,我們將嘗試使用aspnetcore + elasticsearch實現一些簡單的增刪改查的工作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM