Elasticsearch7安裝與集羣

下載安裝

Elasticsearch下載html

Elasticsearch的安裝比較簡單,下載下來直接解壓到指定的目錄就能夠了。關鍵在於配置,這裏咱們下載的是7.1.1版本的Elasticsearch。java

es-dir

es-config

elasticsearch.yml配置文件

elasticsearch配置中最重要的是前面幾項:node

  1. cluster.name 表示集羣的名字,默認是elasticsearch,最好設置一下,由於客戶端鏈接會用到git

  2. node.name 表示節點的名字,是爲了方便區分不一樣的節點github

  3. node.master 爲true表示這個節點有作爲主節點的資格正則表達式

  4. node.data 爲true表示這個節點能夠存儲數據npm

  5. path.data 數據目錄bootstrap

  6. path.logs 日誌目錄跨域

不一樣的場景可使用不一樣的組合,node.master: true,node.data:true表示又要協調客戶端請求,又要存儲數據。node.master:false,node.data:true表示只存儲數據。node.master:true,node.data: false只協調客戶端請求,不存儲數據。node.master:false,node.data:false只處理客戶端請求。瀏覽器

# https://www.elastic.co/guide/en/elasticsearch/reference/index.html

cluster.name: my-es
node.name: node-1
node.master: true
node.data: true

# 數據存放目錄,多個目錄使用逗號分割
path.data: F:\component\esdata\data1

# 綁定HTTP端口
http.port: 9200

# 日誌目錄
path.logs: F:\component\esdata\logs1

# 綁定地址,以便於外網訪問
#network.host: 0.0.0.0

#表示開啓跨域訪問支持,默認爲false
http.cors.enabled: true

#表示跨域訪問容許的域名地址,,可支持正則表達式,這裏「*」表示容許全部域名訪問
http.cors.allow-origin: "*"

#容許跨域訪問頭部信息
#http.cors.allow-headers: "X-Requested-With,Content-Type, Content-Length, Authorization" 

# 配置host以便於節點啓動的時候更快發現其餘節點,默認["127.0.0.1", "[::1]"]
#discovery.seed_hosts: ["host1", "host2"]

# Bootstrap the cluster using an initial set of master-eligible nodes:
#cluster.initial_master_nodes: ["node-1", "node-2","node-3"]

#設置true用來鎖住物理內存
#bootstrap.memory_lock: true

#索引字段緩存大小
#indices.fielddata.cache.size: 50mb 

#設置集羣中master節點初始列表,可經過這些
#discovery.zen.ping.unicast.hosts: ["192.168.37.134:9300","192.168.37.135:9300","192.168.37.136:9300"] 

#配置當前集羣最少的master節點數,默認爲1
#discovery.zen.minimum_master_nodes: 1

jvm.options配置

jvm配置主要是配置啓動Elasticsearch須要的JVM參數,通常狀況不用配置,最經常使用的配置-Xms和-Xmx就是Elasticsearch使用的內存初始值和最大值。本地測試能夠調小一點,線上能夠調大一點。

-Xms512M
-Xmx512M
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+DisableExplicitGC
-XX:+AlwaysPreTouch
-server
-Xss1m
-Djava.awt.headless=true
-Dfile.encoding=UTF-8
-Djna.nosys=true
-Djdk.io.permissionsUseCanonicalPath=true
-Dio.netty.noUnsafe=true
-Dio.netty.noKeySetOptimization=true
-Dio.netty.recycler.maxCapacityPerThread=0
-Dlog4j.shutdownHookEnabled=false
-Dlog4j2.disable.jmx=true
-Dlog4j.skipJansi=true
-XX:+HeapDumpOnOutOfMemoryError

啓動:

es-bin

elasticsearch

配置完成就能夠在瀏覽器中訪問: http://localhost:9200/

es-http

集羣的方式

集羣(cluster)是一組具備相同cluster.name的節點集合,他們協同工做,共享數據並提供故障轉移和擴展功能,固然一個節點也能夠組成一個集羣。

啓動Elasticsearch集羣只須要多複製幾個Elasticsearch,修改一下基本配置就能夠了,主要是修改節點名稱、日誌目錄和數據目錄。 注意,集羣方式只須要有一個節點配置http.port: 9200就能夠了,不然會提示端口已經綁定而起不起來,通常狀況主節點配置一下就能夠了。

elasticsearch-head工具

Elasticsearch提供了HTTP方式的交互方式,咱們能夠經過curl、postman等工具直接發送http請求來獲取相關信息,可是不少時候比較麻煩,咱們能夠經過elasticsearch-head來查看相關的信息。 es-head下載,可使用git的方式,或者直接下載zip而後解壓。

elasticsearch-head是運行須要node.js須要先安裝一下node.js,順便就吧npm也安裝了。進入elasticsearch-head的根目錄,執行下面的命令:

npm install
npm run start

而後就能夠訪問: http://localhost:9100/

es-head-cluster

端口能夠在Gruntfile.js文件中修改:

connect: {
        server: {
            options: {
                port: 9100,
                base: '.',
                keepalive: true
            }
        }
    }

es-head-grunt

注意由於elasticsearch-head使用的端口是9100,Elasticsearch使用的是9200,JavaScript代碼訪問的時候有跨越問題,因此使用elasticsearch-head,在Elasticsearch的elasticsearch.yml配置文件中必定要配置下面2項。

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

咱們使用elasticsearch-head建立2個索引,分片是3,副本是1。

如上圖所示,咱們能夠看到每個6個分片被均勻的分佈到了3個節點上,主分片和副本分片不在同一個節點,這樣就算一個節點失效,也保證了可用。

相關文章
相關標籤/搜索