2017-05-17 1 views
0

私は、 'message'という名前の解析されたjsonフィールドから 'ip'というフィールドを返すログを持っています。タイプ 'geo_point'を探している木場のインデックスに 'geoip.locations'フィールドを使用/マップする方法はありますか?

私はので、私のlogstash.confファイルを設定している:

filter { 
    json { 
    source => "message" 
    } 
    geoip { 
    source => "ip" 
    target => "geoip" 
    #add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] 
    #add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] 
    } 
    #mutate { 
    # convert => [ "[geoip][coordinates]", "float"] 
    #} 
} 

は、しかし、私はマップを作成するために、私のインデックスパターンで使用できる何かを見ていませんよ。木場は私にエラーを与えます:

私はここで間違っていますか?

EDIT:/

{ 
    "<my index>": { 
    "mappings": { 
     "%{[@metadata][type]}": { 
     "properties": { 
      "@timestamp": { 
      "type": "date" 
      }, 
      "@version": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "host": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "message": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "type": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      } 
     } 
     }, 
     "tracking log": { 
     "properties": { 
      "@timestamp": { 
      "type": "date" 
      }, 
      "@version": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "accept_language": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "agent": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "beat": { 
      "properties": { 
       "hostname": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "name": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "version": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       } 
      } 
      }, 
      "context": { 
      "properties": { 
       "course_id": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "course_user_tags": { 
       "type": "object" 
       }, 
       "org_id": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "path": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "user_id": { 
       "type": "long" 
       } 
      } 
      }, 
      "event": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "event_source": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "event_type": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "geoip": { 
      "properties": { 
       "city_name": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "continent_code": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "coordinates": { 
       "type": "float" 
       }, 
       "country_code2": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "country_code3": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "country_name": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "dma_code": { 
       "type": "long" 
       }, 
       "ip": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "latitude": { 
       "type": "float" 
       }, 
       "location": { 
       "type": "float" 
       }, 
       "longitude": { 
       "type": "float" 
       }, 
       "postal_code": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "region_code": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "region_name": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       }, 
       "timezone": { 
       "type": "text", 
       "fields": { 
        "keyword": { 
        "type": "keyword", 
        "ignore_above": 256 
        } 
       } 
       } 
      } 
      }, 
      "host": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "input_type": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "ip": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "message": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "name": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "offset": { 
      "type": "long" 
      }, 
      "page": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "referer": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "session": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "source": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "tags": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "time": { 
      "type": "date" 
      }, 
      "type": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "username": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

を_mapping上のカールの結果は、私はマップを実行するには、このコマンドを使用:

curl -XPOST -u elastic 'localhost:9200/_template/<my index>' -H 'Content-Type: application/json' -d' 
{"order": 0, "template": "<my index>*","mappings": {"_default_": {"dynamic_templates": [{"location_fields": {"mapping": {"type": "geo_point"},"match": "geoip"}}]}}} 
' 

答えて

0

オクラホマ - これを@Alcanzarの助けを借りて解決しました。明らかに、彼が言ったように、一度データがそれに送られたら、フィールドのタイプを変更することは不可能です - 本質的に、あなたがlogstashを起動し、それを使用し始めると。

ので - geo_pointを入力しgeoip.locationをマップする - ここで私がやったこと:

ステップ:

1)私はlogstashを停止しました。

2)「は は)私が使用して欲しかった名前を持つ新しいインデックスを作成しました/」DELETE 'を使用して、私のインデックスを削除した/' Kibana devのコンソールでPUT。

4)はマッピングを適用しました@ Alcanzarはlogstashを再起動)の代わりに '場所'

5 'geoip.location' を使用して、上記貢献。

今geoip.locationがタイプgeo_pointである。

これは経験豊富なESユーザのために取るべきステップであることは明らかかもしれませんが、私にとってはそうではありませんでした。私はこれが他の誰かを助けることを望む。

1

あなたはadd_fieldラインやのmutate /変換は必要ありません。必要なのは、geoipフィールドをelasticsearchのgeo_pointとして適切にマッピングすることです。

通常、インデックステンプレートでこれを実行します。geoipという名前のフィールドはすべてgeo_pointにマップされます。テンプレートを使用すると、より具体的にすることができます。いずれにしても

POST /_template/myindex 
{ 
    "order": 0, 
    "template": "myindex*", 
    "mappings": { 
    "_default_": { 
     "dynamic_templates": [ 
     { 
      "location_fields": { 
      "mapping": { 
       "type": "geo_point" 
      }, 
      "match": "location" 
      } 
     } 
     ] 
    } 
    } 
} 

、あなたはマッピング権を取得し、(設定で)あなたのインデックスマッピングをリロードするkibanaを伝えるために、あなたのデータをインデックスし直す必要があります。

+0

これを実行しました。 curl on/_templateはそこにあることを示しますが、/ _mappingのカールはそれを表示していません。どこが間違っていたのですか?今私のインデックスのすべてのジオイドフィールドを持っていますが、どれもgeo_pointにマップされていません。 – Kickasstimus

+0

テンプレートは、インデックスが作成された時点でのみ適用されます(既存のフィールドのマッピングを変更する方法はありません)。したがって、インデックスを削除してデータのインデックスを再作成する必要があります。 – Alcanzar

+0

OK - それを行いました。互換性のないフィールド:「 *」インデックスパターンに次のフィールドタイプが含まれていません:geo_point – Kickasstimus

関連する問題