Elasticsearch-2.x應用填坑之路


Elasticsearch-2.x應用填坑之路##

使用版本說明:2.1.1

  • 強制不能使用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