Elasticsearch-2.3.x填坑之路


使用版本說明:2.3.2

強制不能使用root用戶啟動?
因為在2.x版本強調了安全性,防止attracker侵入root用戶,所以建議使用者創建其他用戶啟動。當然,可以通過配置來實現root用戶啟動。
在bin目錄修改elasticsearch.in.sh文件,填加如下配置項:
JAVA_OPTS="$JAVA_OPTS -Des.insecure.allow.root=true"
這樣就可以用root用戶啟動elasticsearch了,當然還是建議大家創建其他用戶使用。

節點加入集群?
在前面1.x版本中,只要我們配置了同一個網段的IP,然后啟動Elasticsearch,那么,各個節點會通過廣播的方式獲取到所有節點,但是在2.x中,這種配置有點不太適用了,需要我們對集群各個節點的IP配置在統一的集合中,配置文件當然是conf文件夾下的elasticsearch.yml。

首先,修改network.host,直接指定為與其他節點通信的IP,修改為:
#該IP自行根據實際情況修改

network.host: 192.168.20.177
修改discovery.zen.ping.unicast.hosts配置項,若配置幾個節點用端口不是一樣的,記住加上端口配置:
#同樣,IP和端口自行根據實際情況修改

discovery.zen.ping.unicast.hosts: ["192.168.20.177", "192.168.20.178:9310"]

elasticsearch-servicewrapper插件的使用?
在1.x版本中,我們只要將解壓的service目錄移動到bin目錄下即可使用,但是在2.x版本中,該插件已經基本廢棄,看了一下github上的更新時間,都基本過了n個月或n年。所以需要我們手動去修改一些內容,使其能為我們服務。修改service目錄下的elasticsearch.conf文件:

1.原始的啟動配置為:
wrapper.app.parameter.1=org.elasticsearch.bootstrap.ElasticsearchF
在2.x版本中,啟動類做了修改,也不算做修改吧,就是原來的啟動類有兩個,一個是org.elasticsearch.bootstrap.ElasticsearchF,另一個是org.elasticsearch.bootstrap.Elasticsearch。一個可以將日志打在前台,一個不能而已。在2.x版本中,啟動類只有一個,那就是org.elasticsearch.bootstrap.Elasticsearch,且需要我們傳遞參數啟動,修改如下:


wrapper.app.parameter.1=org.elasticsearch.bootstrap.Elasticsearch
wrapper.app.parameter.2=start

2.修改root權限啟動,因為在用service的時候,其實我們啟動就不使用bin目錄下的elasticsearch.in.sh腳本了,所以需要我們在service里面添加root配置。在配置文件中追加修改即可:
# Java Additional Parameters

wrapper.java.additional.1=-Delasticsearch-service
wrapper.java.additional.2=-Des.path.home=%ES_HOME%
wrapper.java.additional.3=-Xss256k
wrapper.java.additional.4=-XX:+UseParNewGC
wrapper.java.additional.5=-XX:+UseConcMarkSweepGC
wrapper.java.additional.6=-XX:CMSInitiatingOccupancyFraction=75
wrapper.java.additional.7=-XX:+UseCMSInitiatingOccupancyOnly
wrapper.java.additional.8=-XX:+HeapDumpOnOutOfMemoryError
wrapper.java.additional.9=-Djava.awt.headless=true
追加一行:
wrapper.java.additional.10=-Des.insecure.allow.root=true
原來的那些參數的含義我就不說了,些是配置常量的,些是配置JVM的,若有需要可自行更改或添加。

3.設置security
修改ES的配置文件elasticsearch.yml,該配置項沒有在配置中給出,我們直接添加即可:
security.manager.enabled: false


其實我們在設置完前兩項之后基本上ES就可以啟動了,但是我們執行elasticsearch start時會看到啟動過程一直運行,如下表現形式:
#./elsaticsearch start
Starting Elasticsearch...


Waiting for Elasticsearch...............
如果我們不加該配置項,這個地方會一直waiting下去,所以我們需要添加改行配置。

FilterBuilder和QueryBuilder?
在1.x版本中ES查詢條件可以用兩種形式進行封裝,也就是FilterBuilder和QueryBuilder,根據官方給出的解釋,在第二次查詢中,FilterBuilder會比QueryBuilder查詢速度快,因為存在緩存。在2.x版本中,官方刪除了FilterBuilder的所有查詢條件,所以若原采用FilterBuilder的項目需要完全改為QueryBuilder,當然,緩存問題本人暫時沒有進行相關的深究。


免責聲明!

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



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