UCloud Elasticsearch再升級(jí) 全力支持LBS場(chǎng)景
眾所周知,Elasticsearch(ES)是日志分析ELK解決方案的重要一環(huán),也是全文檢索的好幫手。實(shí)際上,ES在LBS(Location based service)場(chǎng)景也同樣好用,結(jié)合全文檢索、結(jié)構(gòu)化檢索與分析,ES基本可以做到實(shí)時(shí)提供基于地理位置的多種信息。
UCloud Elasticsearch(UES)是基于Elasticsearch和Kibana打造的日志管理分析服務(wù)。為支持LBS場(chǎng)景,UCloud(優(yōu)刻得)已于近日推出UES大內(nèi)存機(jī)型,可支持配置16核64G,其性能可以滿足更頻繁的位置查詢。
UES功能進(jìn)一步升級(jí)
UES通過(guò)創(chuàng)建集群的方式來(lái)創(chuàng)建服務(wù),集群自動(dòng)初始化優(yōu)良配置和豐富插件為用戶提供快速創(chuàng)建、易于管理以及線性擴(kuò)容。此外,UES還提供豐富的性能指標(biāo)監(jiān)控和可視化管理平臺(tái),高性能SSD磁盤(pán)有效提升海量日志數(shù)據(jù)存儲(chǔ)、檢索、分析的處理效率。通過(guò)本次功能升級(jí),現(xiàn)已全力支持LBS場(chǎng)景。
LBS的應(yīng)用場(chǎng)景有很多,生活中隨處可見(jiàn),比如社交應(yīng)用中“附近的人”,或是本地服務(wù)應(yīng)用中“附近的餐廳”等。還有一種不太引人注意的場(chǎng)景是零售行業(yè)廣告營(yíng)銷(xiāo)中的位置營(yíng)銷(xiāo)(LBA)。LBA與前兩種稍有不同,技術(shù)實(shí)現(xiàn)稍顯復(fù)雜。下面以查看“附近的餐廳”場(chǎng)景為例,概述ES如何建立地理位置索引,以及如何用ES提供的REST API做位置查詢。
(圖:搜索當(dāng)前點(diǎn)500米范圍內(nèi)的餐廳結(jié)果)
簡(jiǎn)單來(lái)說(shuō),ES在其中的作用分為兩步。***步是建立位置索引,存儲(chǔ)餐廳經(jīng)緯度坐標(biāo),在客戶端用戶開(kāi)始查詢時(shí),用ES提供的geo_distance查詢出一定距離內(nèi)所有的餐廳。
本次示例選用UES服務(wù)作為基礎(chǔ)服務(wù)支持,選擇內(nèi)存優(yōu)化型實(shí)例配置,當(dāng)數(shù)據(jù)量較大或地理位置查詢較頻繁時(shí),集群類型可以選擇UES提供的“主節(jié)點(diǎn)分離”型。
(圖:UCloud控制臺(tái)創(chuàng)建UES集群的界面)
創(chuàng)建mapping
ES支持geo_point和geo_shape兩種地理位置數(shù)據(jù)結(jié)構(gòu)類型。如果想用經(jīng)緯度坐標(biāo)表示位置,可以用geo_point字段;如果想存儲(chǔ)和查詢復(fù)雜的地形,可以用geo_shape字段。本次查詢“附近的餐廳”應(yīng)用場(chǎng)景使用geo_point更合適,代碼示例如下:
- PUT /index_name
- {
- "mappings": {
- "TYPE_NAME": {
- "properties": {
- "location": {
- "type": "geo_point"
- }
- }
- }
- }
- }
建立索引
location字段被聲明為geo_point后,就可以索引包含了經(jīng)緯度信息的文檔了。經(jīng)緯度信息的形式可以是字符串、數(shù)組或者對(duì)象。例如,將(經(jīng)度121.457,緯度31.215)的餐廳坐標(biāo)點(diǎn)存入索引中,代碼示例如下:
- PUT index_name/index_type/1
- {
- "location": {
- "lat": 31.215,
- "lon": 121.457
- }
- }
距離查詢
當(dāng)一個(gè)用戶在(經(jīng)度121.453,緯度31.216)的位置查詢附近2000米內(nèi)所有的餐廳時(shí),內(nèi)部服務(wù)可以向ES服務(wù)發(fā)起geo_distance查詢,查詢參數(shù)包括距離2000米和用戶經(jīng)緯度[121.453, 31.216]。ES服務(wù)會(huì)返回符合條件的餐廳,本例中會(huì)包括上一步中經(jīng)緯度[121.457, 31.215]的餐廳。
至此就完成了利用UES查詢客戶端用戶附近一定范圍內(nèi)的餐廳需求。在查詢期間不需要部署服務(wù),也無(wú)需了解地理位置上兩點(diǎn)距離的算法,只需向UES發(fā)請(qǐng)求即可。本文中討論的場(chǎng)景也僅是ES服務(wù)在地理位置應(yīng)用(LBS)場(chǎng)景的一個(gè)小示例,在實(shí)際應(yīng)用中還有更多地形對(duì)比、結(jié)合地圖SDK的位置聚合等功能,值得繼續(xù)挖掘。
發(fā)現(xiàn)數(shù)據(jù)更多價(jià)值
經(jīng)過(guò)近一年的產(chǎn)品迭代優(yōu)化,UES在性能表現(xiàn)和功能上更為出色,主要升級(jí)點(diǎn)包括:
- 可以做故障自動(dòng)恢復(fù),無(wú)需擔(dān)心服務(wù)不可用;
- 提供了節(jié)點(diǎn)升級(jí)功能,讓用戶有多種擴(kuò)容選擇;
- 增加Elasticsearch的6.2.1版本,并全量發(fā)布x-pack插件,用戶可在控制臺(tái)一鍵安裝,使用Kibana時(shí)更安全,安裝后即可在Kibana中看到Elasticsearch服務(wù)本身更多監(jiān)控指標(biāo),使用方便;
- 上線海外可用區(qū),為用戶業(yè)務(wù)的出海需求提供更多支持。
目前,UES也接入了UCloud(優(yōu)刻得)其它數(shù)據(jù)分析產(chǎn)品,例如用戶可以將UES數(shù)據(jù)備份到UHadoop,保證了數(shù)據(jù)安全。未來(lái),UES將會(huì)接入U(xiǎn)Kafka等更多UCloud(優(yōu)刻得)數(shù)據(jù)分析產(chǎn)品,為用戶提供整套數(shù)據(jù)挖掘、數(shù)據(jù)分析以及可視化方案。UES可以省去企業(yè)部署和維護(hù)的成本,從而發(fā)現(xiàn)數(shù)據(jù)的更多價(jià)值。