Elasticsearch-2.3.x填坑之路

使用版本說明:2.3.2java

強制不能使用root用戶啓動?
由於在2.x版本強調了安全性,防止attracker侵入root用戶,因此建議使用者建立其餘用戶啓動。固然,能夠經過配置來實現root用戶啓動。
在bin目錄修改elasticsearch.in.sh文件,填加以下配置項:
JAVA_OPTS="$JAVA_OPTS -Des.insecure.allow.root=true"
這樣就能夠用root用戶啓動elasticsearch了,固然仍是建議你們建立其餘用戶使用。git

節點加入集羣?
在前面1.x版本中,只要咱們配置了同一個網段的IP,而後啓動Elasticsearch,那麼,各個節點會經過廣播的方式獲取到全部節點,可是在2.x中,這種配置有點不太適用了,須要咱們對集羣各個節點的IP配置在統一的集合中,配置文件固然是conf文件夾下的elasticsearch.yml。github

首先,修改network.host,直接指定爲與其餘節點通訊的IP,修改成:
#該IP自行根據實際狀況修改bootstrap

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文件:app

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,且須要咱們傳遞參數啓動,修改以下:less


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

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的,如有須要可自行更改或添加。ui

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,固然,緩存問題本人暫時沒有進行相關的深究。

相關文章
相關標籤/搜索