2017-02-02 10 views
0

私はいくつかのレコードの経度と緯度を保持するcsvファイルを持っています(それ以外の場合は "")。今度は、logstash 5.1.2を使用して、データをelasticsearch 5.1.2に転送します。私は次のconfファイルを書きましたが、場所フィールドはまだテキストにマップされています。logstashで場所(lon、lat)をマップして木場で視覚化する方法は?

input { 
     file { 
      path => "/usr/local/Cellar/logstash/5.1.2/bin/data.csv" 
      start_position => "beginning" 
      sincedb_path => "/dev/null" 
     } 
} 

filter { 
    csv { 
     columns => ['logtime', 'text', 'user', 'country', 'location'] 
     separator => "," 
    } 
    date { 
     match => ["logtime", "yyyy-MM-dd HH:mm:ss"] 
     timezone => "Europe/London" 
     target => "Date" 
    } 
    if [latitude] and [longitude] { 
    mutate { convert => {"latitude" => "float"} } 
    mutate { convert => {"longitude" => "float"} } 
    mutate { rename => {"latitude" => "[location][lat]"} } 
    mutate { rename => {"longitude" => "[location][lon]"} } 
    } 
} 

output { 
    elasticsearch { 
    hosts => ["localhost:9200"] 
    index => "twitter"} 
} 

私は地理点としてマッピングされた場所のフィールドを作り、Kibana 5.1.2にマップ上のポイントを視覚化することができるように行うことになっていますか?ありがとう

答えて

3

locationをgeo_pointにマッピングするマッピングを作成する必要があります。これを行う最も簡単な方法はインデックステンプレートを使用することです。時間ベースのインデックスを使用すると、新しいインデックスが作成されたときにマッピングが自動的に作成されます。

PUT /_template/twitter 
{ 
    "order": 0, 
    "template": "twitter*", 
    "mappings": { 
    "_default_": { 
     "properties": { 
     "location": { 
      "type": "geo_point" 
     } 
     } 
    } 
    } 
} 

次に、/twitterインデックスを削除し、データのインデックスを再作成します。

上記のテンプレートは、任意の_typelocationフィールド持つ名前twitter*意志で作成されます任意のインデックスがgeo_pointになっていることを述べています。

関連する問題