1、簡介
1:Elasticsearch 是一個分布式可擴展的實時搜索和分析引擎,一個建立在全文搜索引擎 Apache Lucene(TM) 基礎上的搜索引擎.當然 Elasticsearch 並不僅僅是 Lucene 那么簡單,它不僅包括了全文搜索功能,還可以進行以下工作:
-
- 分布式實時文件存儲,並將每一個字段都編入索引,使其可以被搜索。
- 實時分析的分布式搜索引擎。
- 可以擴展到上百台服務器,處理PB級別的結構化或非結構化數據。
像天貓、京東這樣的商城,用戶訪問商城的首頁,一般都會直接搜索來尋找自己想要購買的商品。而商品的數量非常多,而且分類繁雜。
如果能正確的顯示出用戶想要的商品,並進行合理的過濾,盡快促成交易,是搜索系統要研究的核心。
面對這樣復雜的搜索業務和數據量,使用傳統數據庫搜索就顯得力不從心,一般我們都會使用全文檢索技術,比如Solr,Elasticsearch。
2:Elastic官網:https://www.elastic.co/cn/
Elastic有一條完整的產品線及解決方案:Elasticsearch、Kibana、Logstash等,前面說的三個就是大家常說的ELK技術棧。
Elasticsearch(官網:https://www.elastic.co/cn/products/elasticsearch )是Elastic Stack 的核心技術。詳細介紹參考官網
Elasticsearch具備以下特點:
-
- 分布式,無需人工搭建集群(solr就需要人為配置,使用Zookeeper作為注冊中心)。
- Restful風格,一切API都遵循Rest原則,容易上手近實時搜索,數據更新在Elasticsearch中幾乎是完全同步的。
2、安裝
1:為了模擬真實場景,我們將在linux下安裝Elasticsearch。 虛擬機(需要JDK1.8以上)。
2:先新建一個用戶(出於安全考慮,elasticsearch默認不允許以root賬號運行)。
創建用戶:useradd esuser
設置密碼:passwd esuser
3:官網下載,選擇linux版本:https://www.elastic.co/cn/products/elasticsearch。上傳安裝包並解壓
解壓:tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz 目錄重命名:mv elasticsearch-7.3.2 elasticsearch
3、修改配置文件
cd config
1:Elasticsearch基於Lucene的,而Lucene底層是java實現,因此我們需要配置jvm參數。編輯jvm.options
vi jvm.options
2:修改默認配置:-Xms1g -Xmx1g為
3: 編輯elasticsearch.yml修改數據和日志目錄
vi elasticsearch.yml
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 |
4、修改/etc/security/limits.conf文件 增加配置
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
5、啟動
先將es文件夾下的所有目錄的所有權限迭代給esuser用戶
useradd esuser
chown -R esuser:esuser /usr/local/elasticsearch-7.5.1
su esuser
啟動:
先切換到esuser用戶啟動
su esuser
./bin/elasticsearch
可以看到綁定了兩個端口:
-
9300:集群節點間通訊接口
-
9200:客戶端訪問接口