一、Elastic search分布式搜索引擎應(yīng)用場(chǎng)景:
1、全文搜索
Elastic search可以用于實(shí)現(xiàn)全文搜索功能,例如商城中對(duì)商品搜索、關(guān)鍵字搜索、分類(lèi)搜索、訂單搜索、客戶搜索等。它支持復(fù)雜的查詢語(yǔ)句、中文分詞、近似搜索等功能,可以快速地搜索并返回匹配的結(jié)果。
2、日志分析
Elastic search可以用于實(shí)現(xiàn)實(shí)時(shí)日志分析,例如監(jiān)控系統(tǒng)、異常日志分析等。它可以快速地索引和搜索大量的日志數(shù)據(jù),并支持聚合、可視化等功能,可以幫助用戶快速定位和解決問(wèn)題。
3、業(yè)務(wù)分析
Elastic search可以用于實(shí)現(xiàn)業(yè)務(wù)分析,例如企業(yè)數(shù)據(jù)分析、市場(chǎng)調(diào)研等。它可以對(duì)海量數(shù)據(jù)進(jìn)行搜索、聚合和分析,支持多種數(shù)據(jù)格式和數(shù)據(jù)源,例如數(shù)據(jù)庫(kù)、日志、網(wǎng)頁(yè)等,可以幫助用戶了解業(yè)務(wù)情況、市場(chǎng)趨勢(shì)等。
4、搜索推薦
Elastic search可以用于實(shí)現(xiàn)搜索推薦功能,例如電商搜索推薦、新聞推薦等。它可以根據(jù)用戶的搜索歷史、行為等數(shù)據(jù),進(jìn)行個(gè)性化推薦,并支持實(shí)時(shí)更新和調(diào)整推薦結(jié)果。
5、地理信息系統(tǒng)
Elastic search可以用于實(shí)現(xiàn)地理信息系統(tǒng),例如地圖搜索、位置分析等。它支持地理坐標(biāo)索引和查詢,可以快速地搜索和聚合地理數(shù)據(jù),并支持地圖可視化等功能。
二、Elastic search分布式搜索引擎的優(yōu)勢(shì)
1、高效的搜索和聚合功能
Elastic search建立在Lucene搜索引擎基礎(chǔ)之上,具有高效的搜索和聚合功能。它支持多種查詢語(yǔ)句和聚合方式,并能夠快速地搜索和處理海量數(shù)據(jù)。
2、實(shí)時(shí)數(shù)據(jù)處理
Elastic search支持實(shí)時(shí)數(shù)據(jù)處理,可以在數(shù)據(jù)寫(xiě)入時(shí)立即建立索引,并支持實(shí)時(shí)搜索和聚合。這使得它適用于需要實(shí)時(shí)獲取數(shù)據(jù)的場(chǎng)景,例如日志分析、監(jiān)控系統(tǒng)等。
3、可伸縮性
Elastic search是一個(gè)分布式搜索引擎,可以輕松地?cái)U(kuò)展集群規(guī)模,以支持更大的數(shù)據(jù)量和更高的查詢負(fù)載。它支持水平擴(kuò)展和分片技術(shù),可以實(shí)現(xiàn)快速的數(shù)據(jù)處理和查詢。
4、多種數(shù)據(jù)源和格式支持
Elastic search支持多種數(shù)據(jù)源和格式,例如數(shù)據(jù)庫(kù)、日志、網(wǎng)頁(yè)等,可以對(duì)這些數(shù)據(jù)進(jìn)行快速的搜索和聚合。它還支持多種數(shù)據(jù)格式的索引和查詢,例如文本、數(shù)字、日期、地理坐標(biāo)等。
5、易用性和靈活性
Elastic search具有良好的易用性和靈活性,可以快速地部署和配置。它支持多種語(yǔ)言和平臺(tái),例如Java、Python、.NET等,可以與各種應(yīng)用程序進(jìn)行集成。同時(shí),它也提供了豐富的API和插件,可以滿足不同場(chǎng)景和需求的使用。
6、可擴(kuò)展的生態(tài)系統(tǒng)
Elastic search擁有一個(gè)龐大而且活躍的社區(qū),提供了豐富的插件和工具,可以擴(kuò)展其功能和使用。例如,Kibana可以用于數(shù)據(jù)可視化和監(jiān)控,Logstash可以用于數(shù)據(jù)收集和預(yù)處理,Beats可以用于數(shù)據(jù)采集等。
7、可靠的安全性
Elastic search提供了可靠的安全性控制,可以對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)控制和加密,以滿足不同場(chǎng)景和需求的安全要求。它支持用戶認(rèn)證和授權(quán),可以控制用戶對(duì)數(shù)據(jù)的訪問(wèn)和操作。
三、分布式搜索引擎Elastic Search的特點(diǎn):
Elastic Search的目標(biāo)就是實(shí)現(xiàn)搜索。是一款非常強(qiáng)大的開(kāi)源搜索引擎,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容。在數(shù)據(jù)量少的時(shí)候,我們可以通過(guò)索引去搜索關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù),但是如果數(shù)據(jù)量很大,搜索的效率就會(huì)很低,這個(gè)時(shí)候我們就需要一種分布式的搜索引擎。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elastic search結(jié)合kibana、Logstash、Beats,也就是elastic stack(ELK),被廣泛應(yīng)用在日志數(shù)據(jù)分析、實(shí)時(shí)監(jiān)控等領(lǐng)域。而elastic search是elastic stack的核心,負(fù)責(zé)存儲(chǔ)、搜索、分析數(shù)據(jù)。
Elastic search是一個(gè)基于Lucene的搜索服務(wù)器。Elastic search底層是基于lucene來(lái)實(shí)現(xiàn)的。Lucene是一個(gè)Java語(yǔ)言的搜索引擎類(lèi)庫(kù),是Apache公司的頂級(jí)項(xiàng)目。
ES中的存儲(chǔ)是這樣的:
一個(gè)索引(indeces)相當(dāng)于一個(gè)數(shù)據(jù)庫(kù)(database),每個(gè)索引中有多個(gè)類(lèi)型types(相當(dāng)于表結(jié)構(gòu)),每個(gè)索引中有多個(gè)documents(相當(dāng)于行),每個(gè)documents由多個(gè)fields組成(相當(dāng)于字段)。
你可以把ES理解為他是一個(gè)面向文檔的數(shù)據(jù)庫(kù)。下面用一張圖描述ES和關(guān)系型數(shù)據(jù)庫(kù)之間的相似之處:
在企業(yè)中,往往是Elasticsearch和mysql兩者結(jié)合使用:
1、對(duì)安全性要求較高的寫(xiě)操作,使用mysql實(shí)現(xiàn)
2、對(duì)查詢性能要求較高的搜索需求,使用elasticsearch實(shí)現(xiàn)
3、兩者再基于某種方式,實(shí)現(xiàn)數(shù)據(jù)的同步,保證一致性
Elastic Search與MySQL的特征:
MySQL:擅長(zhǎng)事務(wù)類(lèi)型操作,可以確保數(shù)據(jù)的安全和一致性
Elastic Search:擅長(zhǎng)海量數(shù)據(jù)的搜索、分析、計(jì)算
四、RabbitMQ的特點(diǎn)與應(yīng)用場(chǎng)景:
RabbitMQ主要任務(wù)是處理海量的信息。主要用于分布式系統(tǒng)的內(nèi)部各子系統(tǒng)之間的數(shù)據(jù)存儲(chǔ)轉(zhuǎn)發(fā),這是系統(tǒng)解耦方面的一種運(yùn)用。它是對(duì)AMQP協(xié)議的實(shí)現(xiàn),支持多種客戶端,可以對(duì)來(lái)自客戶端的異步消息進(jìn)行存儲(chǔ)轉(zhuǎn)發(fā),在易用性、擴(kuò)展性、高可用性等方面表現(xiàn)不俗。
RabbitMQ的特點(diǎn):
1、基于ErLang語(yǔ)言開(kāi)發(fā)具有高可用高并發(fā)的優(yōu)點(diǎn),適合集群服務(wù)器;
2、健壯、穩(wěn)定、易用、跨平臺(tái)、支持多種語(yǔ)言、文檔齊全;
3、可靠性高,有消息確認(rèn)機(jī)制和持久化機(jī)制,;
4、可靠性:RabbitMQ支持持久化,保證了消息的穩(wěn)定性;
5、高并發(fā)高可用: RabbitMQ使用了Erlang作為開(kāi)發(fā)語(yǔ)言,Erlang是為電話交換機(jī)開(kāi)發(fā)的語(yǔ)言,天生自帶高并發(fā)和高可用的光環(huán);可用于高并發(fā)系統(tǒng)當(dāng)中的流量削峰,將請(qǐng)求流量數(shù)據(jù)臨時(shí)存放到RabbitMQ當(dāng)中,從而避免大量的請(qǐng)求流量直接達(dá)到后臺(tái)服務(wù),把后臺(tái)服務(wù)沖垮。
6、集群部署簡(jiǎn)單:正是因?yàn)镋rlang使得RabbitMQ集群部署變的超級(jí)簡(jiǎn)單;
7、RabbitMQ是實(shí)現(xiàn)了AMQP標(biāo)準(zhǔn)的消息服務(wù)器。
RabbitMQ是一種基于erlang語(yǔ)言開(kāi)發(fā)的流行的開(kāi)源消息中間件,或者說(shuō)是一個(gè)消息隊(duì)列系統(tǒng)。消息的生產(chǎn)者把要發(fā)送的消息放入到消息隊(duì)列中,消息的接收端可以根據(jù)RabbitMQ配置的轉(zhuǎn)發(fā)機(jī)制接收服務(wù)端發(fā)來(lái)的消息。RabbitMQ依據(jù)指定的轉(zhuǎn)發(fā)規(guī)則進(jìn)行消息的轉(zhuǎn)發(fā)、緩沖和持久化操作,主要用在多服務(wù)器間或單服務(wù)器的子系統(tǒng)間進(jìn)行通信,RabbitMQ是分布式系統(tǒng)的標(biāo)準(zhǔn)配置。
五、安裝部署:
(一)ES 安裝Elastic Search
-
確保系統(tǒng)已經(jīng)安裝jdk1.8及以上版本
-
-
-
-
-
-
添加用戶
useradd admin -
解壓
(1)tar xf elasticsearch-5.6.7.tar.gz -C /usr/local
(2)cd /usr/local -
設(shè)置軟鏈
ln -sv elasticsearch-5.6.7 elasticsearch
5.創(chuàng)建文件夾
mkdir -pv /usr/local/elasticsearch/{data,logs}
mkdir -p /usr/local/elasticsearch/plugins
mkdir -p /usr/local/elasticsearch/config/scripts -
設(shè)置權(quán)限
chown -R admin.admin /usr/local/elasticsearch-5.6.7 -
修改配置文件
vi /usr/local/elasticsearch/config/elasticsearch.yml
cluster.name: my_application
換個(gè)節(jié)點(diǎn)名字
node.name: node-1
path.data: /usr/local/elasticsearch/data
path.logs: /usr/local/elasticsearch/logs
修改一下ES的監(jiān)聽(tīng)地址,這樣別的機(jī)器也可以訪問(wèn)
network.host: 0.0.0.0
http.port: 9200
增加新的參數(shù),這樣head插件可以訪問(wèn)es
http.cors.enabled: true
http.cors.allow-origin: “*”
- 編輯limit.conf文件
vi /etc/security/limits.conf - 編輯sysctl.conf文件 /etc/sysctl.conf
vm.max_map_count= 262144
sysctl -p
14. 啟動(dòng)es服務(wù),切換至上面添加的admin用戶
(1)指令如下
cd /usr/local
chown -R admin.admin /usr/local/elasticsearch-5.6.7
su admin
(2)啟動(dòng)es
cd elasticsearch/bin
./elasticsearch
16. 可能遇到的問(wèn)題
-
安裝ik分詞器 解壓后文件名稱改為ik-analysis
放入 /usr/local/elasticsearch/plugins
切換root 執(zhí)行這個(gè)命令
chown -R admin.admin /usr/local/elasticsearch-5.6.7 -
后臺(tái)啟動(dòng)es
cd /usr/local/elasticsearch/bin
su admin
./elasticsearch -d
(二)RabbitMQ安裝
- 上傳安裝包
2 解壓
tar -zxvf otp_src_22.0.tar.gz
3. 移走
mv otp_src_22.0 /usr/local/
4. 切換目錄
cd /usr/local/otp_src_22.0/
5. 安裝依賴
yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel
- 創(chuàng)建即將安裝的目錄
mkdir …/erlang - 配置安裝路徑
chmod +7 /usr/local/erlang
./configure --prefix=/usr/local/erlang
提示權(quán)限不夠時(shí),以下路徑給root配置+7權(quán)限
chmod +7 /usr/local/opt_src_22.0/Erts/configure
chmod +7 /usr/local/opt_src_22.0/Make/configure
chmod +7 /usr/local/opt_src_22.0/Lib/common-test/configure
chmod +7 /usr/local/opt_src_22.0/Lib/crypto/configure
chmod +7 /usr/local/opt_src_22.0/Lib/erl-interface/configure
chmod +7 /usr/local/opt_src_22.0/Lib/megaco/configure
chmod +7 /usr/local/opt_src_22.0/Lib/odbc/configure
chmod +7 /usr/local/opt_src_22.0/Lib/snmp/configure
chmod +7 /usr/local/opt_src_22.0/Lib/wx/configure
-
安裝
make install -
查看一下是否安裝成功
ll /usr/local/erlang/bin -
添加環(huán)境變量
echo ‘export PATH=$PATH:/usr/local/erlang/bin’ >> /etc/profile -
刷新環(huán)境變量
source /etc/profile -
執(zhí)行erl (在安裝目錄下執(zhí)行)
-
通過(guò)生效的環(huán)境變量執(zhí)行(相當(dāng)于有了DOS系統(tǒng)搜索路徑后,再執(zhí)行.exe或.com .bat)
14. halt().命令退出來(lái)
-
由于是tar.xz格式的所以需要用到xz,沒(méi)有的話就先安裝
yum install -y xz -
解壓rabbitmq-server-generic-unix 第一次解壓
tar /bin/xz -d rabbitmq-server-generic-unix-3.7.15.tar.xz -
第二次解壓
tar -xvf rabbitmq-server-generic-unix-3.7.15.tar -
移走
mv rabbitmq_server-3.7.15/ /usr/local/
cd /usr/local/ -
改名
mv /usr/local/rabbitmq_server-3.7.15 rabbitmq -
配置環(huán)境變量
echo ‘export PATH=$PATH:/usr/local/rabbitmq/sbin’ >> /etc/profile -
刷新環(huán)境變量
source /etc/profile -
啟動(dòng) 停止 狀態(tài)
rabbitmq-server –detached
rabbitmqctl stop
rabbitmqctl status
-
開(kāi)啟web插件
rabbitmq-plugins enable rabbitmq_management -
添加一個(gè)用戶
rabbitmqctl add_user admin yuanfeng021 -
配置權(quán)限
rabbitmqctl set_permissions -p “/” admin “." ".” “.*”rabbitmqctl set_user_tags admin administrator
26、在CentOS8本機(jī)上訪問(wèn):http://XXX.XXX.XXX:15672/ admin yuanfeng021
27、此時(shí)發(fā)現(xiàn)在局域網(wǎng)上不能訪問(wèn),所以
(1)查看CentOS上開(kāi)啟的端口號(hào)
可以看出,并沒(méi)有15672端口未被開(kāi)啟
(2)通過(guò)命令firewall-cmd –add-port=xxx/tcp命令開(kāi)啟5672、15671、15672三個(gè)端口
若永久開(kāi)啟15672端口時(shí),使用命令firewall-cmd --permanet --add-port=15672/tcp
(3)修改rabbitmq的配置文件,rabbitmq-env
增加一行內(nèi)容如下:(大寫(xiě))
NODE_IP_ADDRESS=192.168.0.132(你安裝rabbitmq server的CentOS的網(wǎng)卡ip地址)
(4)從局域網(wǎng)的電腦telnet測(cè)試rabbitmq-server的15672端口號(hào)
測(cè)試結(jié)果如下:說(shuō)明15672端口開(kāi)啟正常(左上方的光標(biāo)一閃一閃,未提示連接端口失?。?br>
28、從局域網(wǎng)訪問(wèn)rabbitmq-server正常,如下圖:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-763748.html
訪問(wèn)成功,至此分布式搜索引擎(Elastic Search)+消息隊(duì)列(RabbitMQ)部署結(jié)束,不足之處敬請(qǐng)批評(píng)指正。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-763748.html
到了這里,關(guān)于分布式搜索引擎(Elastic Search)+消息隊(duì)列(RabbitMQ)部署(商城4)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!