環境介紹java
本人使用操做系統是centOS 7.0版本(固然集羣推薦是在linux環境下咯)node
服務器 | 是否能夠成爲主節點 | 是否爲數據節點 |
192.168.1.220 | true | true |
192.168.1.221 | true | true |
192.168.1.222 | true | true |
詳細安裝步驟就不作介紹了,網上搜索一大堆,推薦Oracle jdk,卸載掉自帶的openJdk,給個參考連接linux 安裝jdkmysql
下載es,下載地址,本人使用的是5.5版本,之因此不用最新版本,是spring boot目前還不支持最新版本的es,因此避免出現版本不對應的坑,這種坑很是浪費時間。若是你們關心springboot版本和對於的es的版本對於關係,請去spring官網查詢。linux
下載編譯好的版本,名稱elasticsearch-5.5.0.tar.gzgit
拷貝下載好的文件,上傳到服務上,新建文件夾/usr/local/elasticsearch,解壓到當前目錄。web
tar -zxvf elasticsearch-5.5.0.tar.gz 最好重命名下,由於後面若是升級es,能夠也放到該目錄下。spring
新建log和data文件夾,注意:放在elasticsearch-5.5.0安裝目錄的同級,避免升級es版本或是從新安裝數據和日誌被不當心覆蓋。sql
mkdir /usr/local/elasticsearch/data數據庫
mkdir /usr/local/elasticsearch/logsapache
個人目錄以下:
新建es用戶並受權,由於es不能用root帳號啓動
#添加用戶
useradd es
#賦予文件夾權限
chown -R es:es /usr/local/elasticsearch
修改配置文件
vim /usr/local/elasticsearch/elasticsearch-5.5.0/config/elasticsearch.yml 將配置文件如下內容進行修改:
注意:集羣名稱三個節點都要相同,discovery.zen.ping.unicast.hosts最好不配置自身節點ip
bootstrap.memory_lock: true 這個配置慎用,由於我一開始申請的服務沒有root權限,系統配置無法修改因此我註釋掉了,目前我還沒去測試這個配置到底多影響性能,下面的註釋是網上拷貝的,你們可根據實際狀況調整
#集羣的名稱 cluster.name: eshare-es #節點名稱,其他兩個節點分別爲node-2 和node-3 node.name: node-1 #指定該節點是否有資格被選舉成爲master節點,默認是true,es是默認集羣中的第一臺機器爲master,若是這臺機掛了就會從新選舉master node.master: true #容許該節點存儲數據(默認開啓) node.data: true #索引數據的存儲路徑 path.data: /usr/local/elasticsearch/data #日誌文件的存儲路徑 path.logs: /usr/local/elasticsearch/logs #設置爲true來鎖住內存。由於內存交換到磁盤對服務器性能來講是致命的,當jvm開始swapping時es的效率會下降,因此要保證它不swap #bootstrap.memory_lock: true #綁定的ip地址 network.host: 0.0.0.0 #設置對外服務的http端口,默認爲9200 http.port: 9200 # 設置節點間交互的tcp端口,默認是9300 transport.tcp.port: 9300 #Elasticsearch將綁定到可用的環回地址,並將掃描端口9300到9305以嘗試鏈接到運行在同一臺服務器上的其餘節點。 #這提供了自動集羣體驗,而無需進行任何配置。數組設置或逗號分隔的設置。每一個值的形式應該是host:port或host #(若是沒有設置,port默認設置會transport.profiles.default.port 回落到transport.tcp.port)。 #請注意,IPv6主機必須放在括號內。默認爲127.0.0.1, [::1] discovery.zen.ping.unicast.hosts: ["192.168.1.220:9300,192.168.1.221:9300,192.168.1.222:9300"] #若是沒有這種設置,遭受網絡故障的集羣就有可能將集羣分紅兩個獨立的集羣 - 分裂的大腦 - 這將致使數據丟失 discovery.zen.minimum_master_nodes: 2 http.cors.enabled: true http.cors.allow-origin: "*" http.enabled: true
修改虛擬機內存(不是必須步驟,根據實際狀況調整)
vim /usr/local/elasticsearch//elasticsearch-5.5.0/config/jvm.options #默認是1g官方建議對jvm進行一些修改,否則很容易出現OOM,參考官網改參數配置最好不要超過內存的50% -Xms2g -Xmx2g
修改系統文件數限制(必須)
切回root用戶su - root,修改配置
① vim /etc/security/limits.conf
* soft nofile 65536 * hard nofile 65536 * soft nproc 2048 * hard nproc 4096 #若是選擇鎖住swapping所以須要在這個配置文件下再增長兩行代碼 #es soft memlock unlimited #es hard memlock unlimited
② vim /etc/sysctl.conf
注意:以後須要執行一句命令sysctl -p使系統配置生效(使用root用戶)。
vm.max_map_count=655360 fs.file-max=655360
安裝步驟完成,分別啓動三個節點,先啓動你想作爲主節點的服務器。我這裏是220。
安裝完成進行測試:在沒有安裝head插件的狀況下,能夠先用命令行測試比較方便說是直接訪問http://192.168.1.220:9200
curl -Xget http://192.168.1.221:9200/_count 查詢總數
若是你們想安裝hea的插件,可參考網上的例子 elasticsearch 安裝head插件
1)首先新建spring boot項目 這個很少介紹,能夠參考我之前的文章。
2)集成elasticsearch
使用maven,引入es相關包,我這裏把個人項目pom所有貼出來,裏面還有其餘的內容,僅供參考。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.esharex</groupId> <artifactId>bigdata</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>bigdata</name> <description>esharex big data center</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.3.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-elasticsearch --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.5.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--<exclusions><!– 去掉默認配置 –>--> <!--<exclusion>--> <!--<groupId>org.springframework.boot</groupId>--> <!--<artifactId>spring-boot-starter-tomcat</artifactId>--> <!--</exclusion>--> <!--</exclusions>--> </dependency> <!--<dependency>--> <!--<groupId>org.springframework.boot</groupId>--> <!--<artifactId>spring-boot-starter-tomcat</artifactId>--> <!--<scope>provided</scope>--> <!--</dependency>--> <!--<dependency>--> <!--<groupId>javax.servlet</groupId>--> <!--<artifactId>javax.servlet-api</artifactId>--> <!--</dependency>--> <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils --> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.6</version> </dependency> <!--druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.28</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.batch</groupId> <artifactId>spring-batch-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
具體代碼,我放碼雲上,目前的主要功能是從mysql中將業務數據庫中的數據導入到ElasticSearch中進行搜索。相關的索引操做能夠ElasticsearchRepository的使用 源碼地址