我得到了一些日誌,如:映射CITYNAME從Logstash的GeoPoint到Elasticsearch
2015-09-25 12:07:55.441 INFO 17328 --- [][][][]
XXX.YYY.SomeClass : Someone request in CityX!
我將其導入到Elasticsearch
:
{
"_index": "logstash-2015.09.25",
"_type": "redis-input",
"_id": "AVADGRo7JaVbcBhehzEj",
"_score": 1,
"_source": {
"@timestamp": "2015-09-25T12:21:24.616+08:00",
"@version": 1,
"message": "Someone request in CityX!",
"logger_name": "XXX.YYY.SomeClass",
"thread_name": "pool-22-thread-1",
"level": "INFO",
"level_value": 20000,
"HOSTNAME": "host",
"host": "192.168.5.194: 57154",
"type": "redis-input"
}
}
我只想映射CityX
(任何城市發生在我日誌,並假設我們可以得到每個城市的經度和緯度)到GeoPoint
,Elasticsearch
,以便我們可以通過Kibana
在地圖上顯示用戶請求的數量。我應該怎麼做?
整個管道:
logstash(:4560) --> redis(:6379) --> logstash-indexer --> elasticsearch (:9200)
配置:
Logstash - > Redis的:
input {
tcp {
port => 4560
codec => json_lines
}
}
output {
redis {
host => "10.0.40.155"
port => 6379
data_type => "list"
key => "key_count"
}
}
的Redis - > Logstash - > Elasticsearch:
input {
redis {
host => "127.0.0.1"
port => 6379
type => "redis-input"
data_type => "list"
key => "key_count"
}
}
output {
stdout {}
elasticsearch {
host => "10.0.40.156"
cluster => "elasticsearch"
codec => "json"
protocol => "http"
}
}
您的消息字段是否總是包含一個字符串,類似於'CityX!中的某人請求!你是否已經有了所有城市的地理位置列表,或者你認爲這是動態的? – Val
也正如你所知道的,地球上的城市名稱並不是獨一無二的(即在馬尼拉也有許多城市叫「舊金山」)。所以另一個問題是你想如何處理這個問題?您是否有預先定義的城市列表,您知道它們會出現在日誌中?這個日誌是如何構建的,即城市名稱(例如你的例子中的CityX)來自哪裏? – Val
@Val感謝您的好意。我們從用戶的電話號碼中獲得城市(中文,存在:'f(電話號碼)=城市')。我們有一個數據庫(電話號碼 - >城市),我們可以購買另一個數據庫(城市 - >拉特,長)。我通過一個簡單的grok過濾器解決了我的問題。我會感謝您對我的解決方案的任何評論。 – Sayakiss