Elasticsearch 是一個分佈式可擴展的實時搜索和分析引擎,一個創建在全文搜索引擎 Apache Lucene(TM) 基礎上的搜索引擎.固然 Elasticsearch 並不只僅是 Lucene 那麼簡單,它不只包括了全文搜索功能,還能夠進行如下工做:java
像天貓、京東這樣的商城,用戶訪問商城的首頁,通常都會直接搜索來尋找本身想要購買的商品。而商品的數量很是多,並且分類繁雜。
若是能正確的顯示出用戶想要的商品,並進行合理的過濾,儘快促成交易,是搜索系統要研究的核心。
面對這樣複雜的搜索業務和數據量,使用傳統數據庫搜索就顯得力不從心,通常咱們都會使用全文檢索技術,好比Solr,Elasticsearch。
Elastic官網:https://www.elastic.co/cn/node
Elastic有一條完整的產品線及解決方案:Elasticsearch、Kibana、Logstash等,前面說的三個就是你們常說的ELK技術棧。linux
Elasticsearch(官網:https://www.elastic.co/cn/products/elasticsearch )是Elastic Stack 的核心技術。詳細介紹參考官網數據庫
Elasticsearch具有如下特色:bootstrap
爲了模擬真實場景,咱們將在linux下安裝Elasticsearch。 虛擬機(須要JDK1.8以上)瀏覽器
建立用戶:useradd esuser
設置密碼:passwd esuser
官網下載,選擇linux版本:https://www.elastic.co/cn/products/elasticsearch安全
選擇亦可下載,選擇linux版本服務器
新建文件夾:mkdir es
咱們將安裝包上傳到:/home/es目錄
解壓:tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz 目錄重命名:mv elasticsearch-7.3.2 elasticsearch
完成後,查看下目錄結構:網絡
cd config
須要修改的配置文件有兩個:app
Elasticsearch基於Lucene的,而Lucene底層是java實現,所以咱們須要配置jvm參數。編輯jvm.options
vi jvm.options
修改默認配置:-Xms1g -Xmx1g爲
編輯elasticsearch.yml修改數據和日誌目錄
vi elasticsearch.yml
node.name: node-1 #配置當前es節點名稱(默認是被註釋的,而且默認有一個節點名)
cluster.name: my-application #默認是被註釋的,而且默認有一個集羣名
path.data: /home/es/data # 數據目錄位置
path.logs: /home/es/logs # 日誌目錄位置
network.host: 0.0.0.0 #綁定的ip:默認只容許本機訪問,修改成0.0.0.0後則能夠遠程訪問
cluster.initial_master_nodes: ["node-1", "node-2"] #默認是被註釋的 設置master節點列表 用逗號分隔
進入es的根目錄,而後建立logs data
mkdir data
mkdir logs
elasticsearch.yml的其它可配置信息:
屬性名 | 說明 |
---|---|
cluster.name | 配置elasticsearch的集羣名稱,默認是elasticsearch。建議修改爲一個有意義的名稱。 |
node.name | 節點名,es會默認隨機指定一個名字,建議指定一個有意義的名稱,方便管理 |
path.conf | 設置配置文件的存儲路徑,tar或zip包安裝默認在es根目錄下的config文件夾,rpm安裝默認在/etc/ elasticsearch |
path.data | 設置索引數據的存儲路徑,默認是es根目錄下的data文件夾,能夠設置多個存儲路徑,用逗號隔開 |
path.logs | 設置日誌文件的存儲路徑,默認是es根目錄下的logs文件夾 |
path.plugins | 設置插件的存放路徑,默認是es根目錄下的plugins文件夾 |
bootstrap.memory_lock | 設置爲true能夠鎖住ES使用的內存,避免內存進行swap |
network.host | 設置bind_host和publish_host,設置爲0.0.0.0容許外網訪問 |
http.port | 設置對外服務的http端口,默認爲9200。 |
transport.tcp.port | 集羣結點之間通訊端口 |
discovery.zen.ping.timeout | 設置ES自動發現節點鏈接超時的時間,默認爲3秒,若是網絡延遲高可設置大些 |
discovery.zen.minimum_master_nodes | 主結點數量的最少值 ,此值的公式爲:(master_eligible_nodes / 2) + 1 ,好比:有3個符合要求的主結點,那麼這裏要設置爲2 |
vi /etc/security/limits.conf
在文件最後,增長以下配置:
* soft nofile 65536 * hard nofile 65536
在/etc/sysctl.conf文件最後添加一行 vm.max_map_count=655360 添加完畢以後,執行命令: sysctl -p
vi /etc/sysctl.conf
sysctl -p
先將es文件夾下的全部目錄的全部權限迭代給esuser用戶
chgrp -R esuser ./es
chown -R esuser ./es
chmod 777 es
啓動:
先切換到esuser用戶啓動
su esuser
./bin/elasticsearch
9300:集羣節點間通信接口
9200:客戶端訪問接口