user用戶下java
unzip elasticsearch_bak.zip #解壓引擎文件 # 修改默認的配置文件 cd elasticsearch_bak/config vi elasctsearch.yml cluster.name: es-zl #修改集羣名,全部節點配置的該名稱必須同樣 node.name: es-46 #修改每一個節點的名稱,必須不一樣,以區分每一個節點 node.master:true #是否可做爲主節點 path.data: /data/es_data #es數據存放的位置 network.host:127.17.30.46 #每一個節點的ip地址 http.port: 9200 #節點的端口,必須相同,默認9200 bootstrap.memory_lock: true bootstrap.system_call_filter: false #內存鎖定,防止swap使es產生內存交互 discovery.zen.ping.unicast.hosts:["127.17.30.44","127.17.30.45",,] #集羣master節點的ip,不須要全部節點的ip,其餘節點只要能與任意一個master節點通信,便可加入到該集羣當中 discovery.zen.minimum_master_nodes:2 #當2個有資格成爲主節點的從節點認爲主節點掛了,則進行從新選主,通常設置爲(n/2)+1,防止es出現腦裂狀況 gateway.recover_after_nodes: 3 #節點數量達到多少以後,進行數據恢復處理 http.cors.enabled: true http.cors.allow-origin: "*" vi yvm.options -Xms16g #默認爲2g,可根據服務器內存,自行修改 #經過一下命令查看內存 cat /proc/cpuinfo | grep 'cpu cores' | wc -l #查看cpu核數 cat /proc/meminfo | grep MemTotal #只查看內存 free -h #查看內存的使用 df -h #查看硬盤存儲
注意:該操做必須在每臺服務器上都要部署,並不能在root用戶下操做,要在user下操做,若是沒有usr用戶,則建立。node
若是沒有操做權限,則執行:git
# root下,將文件權限設置爲duser用戶可操做 chown duser * chgrp duser *
當不使用es遠程詞典時: github
修改elasticsearch-5.3.0/plugins/ik/config/IKAnalyzer.cfg.xmlbootstrap
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 擴展配置</comment> <!--用戶能夠在這裏配置本身的擴展字典 --> <entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry> <!--用戶能夠在這裏配置本身的擴展中止詞字典--> <entry key="ext_stopwords">custom/ext_stopword.dic</entry> <!--用戶能夠在這裏配置遠程擴展字典 --> <!-- <entry key="remote_ext_dict">http://10.172.80.229:9301/mydict.dic</entry> --> <!--用戶能夠在這裏配置遠程擴展中止詞字典--> <!-- <entry key="remote_ext_stopwords">http://10.172.80.229:9301/stopword.dic</entry> --> </properties>
說明:註釋後兩項便可vim
添加自定義同義詞bash
替換config/synonyms.txt文件服務器
synonyms.txt文件內格式,全部同義詞爲一行,且用 「, 」 隔開app
root用戶下cors
vi /etc/security/limits.conf #添加如下語句 * soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536 duser soft memlock unlimited duser hard memlock unlimited vi /etc/sysctl.conf #修改如下語句 vm.max_map_count=655360 sysctl -p
user用戶下
cd elasticsearch_bak/bin ./elasticsearch -d #後臺啓動集羣 curl 172.17.30.45:9200/_cat/nodes #查看全部節點,*爲主節點 # 啓動不了時候,查看es-log
user用戶下的操做,查看es-log
vi index_search_mapping.sh #修改的ip和端口與集羣同樣 curl -XPUT "http://10.25.114.90:9200/index" { settings": { "number_of_shards": 6, #主分片數量,通常爲 服務器總核數 "number_of_replicas": 2, #副本分片的數量,防止數據丟失 }
注意:分詞器anslyzer能夠根據實際狀況進行修改、刪除和添加
添加刪除字段 當須要添加字段時,只要在如下位置添加便可
"mappings": { "index": { "properties": { "id": { "type": "keyword" }, "": { #須要添加的字段名 "type":"" #添加的字段的約束條件 } } } }
注意:修改某個文件的字段以前,須要先刪除該文件的core
從新啓動搜索時,也須要進行如下步驟
curl -XDELETE "http://172.19.30.45:9200/index" #修改完以後,從新運行該文件 sh index_search_mapping.sh
curl http://ip:9200/index?pretty#查詢字段 curl http://ip:9200/_cat/nodes #查詢節點 curl http://ip:9200/_cat/health #查詢集羣健康,green curl http://ip:9200/_cat/shards #查詢集羣分片狀態
curl http://ip:9200/one_index/_stats #查詢某一個index下的數據量 curl http://ip:9200/one_index,two_index/_stats #查詢多個index的數據量,使用,隔開 curl http://ip:9200/_all/_stats #查詢全部index下的數據量 # 返回search、fetch、get、index、bulk、segment、counts curl http://ip:9200/_cat/count/index #只查詢某個index下的文檔數,若是不加index,則查詢全部的index的文檔總數
查詢es的版本
curl ip:9200 # 結果中的number數據即表明版本號
安裝search-guard https://repo1.maven.org/maven...
找到對應的版本,下載便可
或者使用命令行下載,es目錄下
bin/elasticsearch-plugin install -b com.floragunn:search-guard-5:5.3.0-12
安裝search-guard-ssl https://repo1.maven.org/maven...
命令行
bin/elasticsearch-plugin install -b com.floragunn:search-guard-ssl:5.3.0-22
注意:當es版本較高時,可能並不須要這兩個都存在,取search-guard便可
下載search-guard源碼工具,生成證書的工具
git clone https://github.com/floragunncom/search-guard-ssl.git
修改ca配置
cd search-guard-ssl/example-pki-scripts/etc/ vi root-ca.conf # 根證書配置 0.domainComponent = "www.test.com」 # 域名 1.domainComponent = "www.test.com" # 域名 organizationName = "Test" # 組織名稱 organizationalUnitName = "Test Root CA" # 組織單位名稱 commonName = "Test Root CA" # 通用名稱 vi signing-ca.conf # 簽名證書配置 0.domainComponent = "www.test.com」 # 域名 1.domainComponent = "www.test.com" # 域名 organizationName = "Test" # 組織名稱 organizationalUnitName = "Test Signing CA" # 組織單位名稱 commonName = "Test Signing CA" # 通用名稱
注意:
以上信息填寫,必須保證和生成證書時信息一致
修改sh文件 返回example-pki-scripts目錄下,修改example.sh文件:
#!/bin/bash set -e ./clean.sh ./gen_root_ca.sh 12345678 12345678 ./gen_node_cert.sh 0 12345678 12345678&& ./gen_node_cert.sh 1 12345678 12345678 && ./gen_node_cert.sh 2 12345678 12345678 ./gen_client_node_cert.sh test 12345678 12345678 ./gen_client_node_cert.sh test 12345678 12345678
參數說明:
./gen_root_ca.sh 12345678 12345678
第一個參數爲CA_PASS,即CA密碼(根證書密碼)
第二個參數爲TS_PASS,即TS密碼(truststore,信任證書密碼)
./gen_node_cert.sh 0 12345678 12345678
第一個參數爲node編號,生成證書後的文件名爲node-0*
第二個參數爲KS_PASS(keystore文件密碼)
第三個參數爲CA_PASS
./gen_client_node_cert.sh test 12345678
第一個參數爲客戶端節點名稱,生成證書後的文件名爲test*
第二個參數爲KS_PASS
第三個參數爲CA_PASS
生成證書,運行example.sh
sh example.sh # 在當前目錄下會生成證書文件
將生成的各個節點的證書,分別copy到各個節點上
# 將node-0-keystore.jks和truststore.jks複製到es的config目錄下 cp node-0-keystore.jks ~/elasticsearch/config/ cp truststore.jks ~/elasticsearch/config/ # 將test-keystore.jks和truststore.jks複製到es的plugins/search-guard-2/sgconfig目錄下 cp test-keystore.jks ~/elasticsearch/plugins/search-guard-2/sgconfig/ cp truststore.jks ~/elasticsearch/plugins/search-guard-2/sgconfig/
注意:
保持證書的一致性,所以只須要在一臺機器上生成CA證書便可
修改es的配置文件config/elaticsearch.yml
在以前修改的基礎上,增長以下配置
配置ssl searchguard.ssl.transport.enabled: true searchguard.ssl.transport.keystore_filepath: node-0-keystore.jks searchguard.ssl.transport.keystore_password: 12345678 searchguard.ssl.transport.truststore_filepath: truststore.jks searchguard.ssl.transport.truststore_password: 12345678 searchguard.ssl.transport.enforce_hostname_verification: false searchguard.ssl.transport.resolve_hostname: false # 配置https # http配置,這裏我只是爲了測試方便,配置完,應該設置爲true searchguard.ssl.http.enabled: false searchguard.ssl.http.keystore_filepath: node-0-keystore.jks searchguard.ssl.http.keystore_password: 12345678 searchguard.ssl.http.truststore_filepath: truststore.jks searchguard.ssl.http.truststore_password: 12345678 # CN爲生成CA證書時填寫的信息,即./gen_client_node_cert.sh test 12345678 命令的第一個參數 searchguard.authcz.admin_dn: - CN=test, OU=client, O=client, L=Test, C=DE
啓動es
添加權限
chmod -R 777 plugins/search-guard-5/tools/sgadmin.sh
配置格式
./plugins/search-guard-5/tools/sgadmin.sh -cn clustername -h hostname -cd plugins/search-guard-5/sgconfig -ks plugins/search-guard-5/sgconfig/admin-keystore.jks -kspass password -ts plugins/search-guard-5/sgconfig/truststore.jks -tspass password -nhnv
注意:
clustername爲集羣的名稱
hostname爲elasticsearch.yml 文件中 network.host 的值
password生成證書設置的密碼
以上配置生成的命令爲
./plugins/search-guard-5/tools/sgadmin.sh -cn es-nlp -h 192.168.124.18 -cd plugins/search-guard-5/sgconfig -ks plugins/search-guard-5/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-5/sgconfig/truststore.jks -tspass 12345678 -nhnv
生成md5加密密碼
chmod -R 777 plugins/search-guard-2/tools/hash.sh cd plugins/search-guard-2/tools/ plugins/search-guard-2/tools/hash.sh -p 123456 # 保存生成的hash密碼
添加用戶及密碼
vim plugins/search-guard-5/sgconfig/sg_internal_users.yml sunww: hash: 加密後的字符串 # password: 123456 # 最後一行時password提示,防止忘記
添加用戶的權限
vim plugins/search-guard-5/sgconfig/sg_roles_mapping.yml ag_all_access: users: - admin - sunww # 添加全部權限給sunww用戶
從新將配置寫入es中生效
./plugins/search-guard-5/tools/sgadmin.sh -cn es-nlp -h 192.168.124.18 -cd plugins/search-guard-5/sgconfig -ks plugins/search-guard-5/sgconfig/test-keystore.jks -kspass 12345678 -ts plugins/search-guard-5/sgconfig/truststore.jks -tspass 12345678 -nhnv
curl http://sunww:123456@127.0.0.1:9200 curl -u sunww:123456 http://127.0.0.1:9200 curl --user sunww:123456 http://127.0.0.1:9200
過兒,你學廢了嗎?