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