0

私はElasticsearchでテキストファイルをインポートしたいと思います。テキストファイルには、1行に3つの値が含まれています。数時間の苦労の後、私はそれをやり遂げませんでした。ヘルプは非常に高く評価されます。logstashインデックスのテキストファイル

Elasticsearch 5.4.0とLogstashがインストールされています。

サンプルデータ:

username email hash 
username email hash 
username email hash 
username email hash 
username email hash 

もPythonスクリプトを構築しましたが、その遅すぎる:

import requests 
import json 
from elasticsearch import Elasticsearch 
es = Elasticsearch([{'host': 'localhost', 'port': 9200}]) 

i = 1 
with open("my2") as fileobject: 
    for line in fileobject: 
     username, email, hash = line.strip('\n').split(' ') 
     body = {"username": username, "email": email, "password": hash} 
     es.index(index='dbs', doc_type='db1', id=i, body=body) 
     i += 1 

編集: おかげでその作業が、私はそれを見てみたいので、私のフィルタが悪いと思います

{ 
    "_index": "logstash-2017.06.01", 
    "_type": "db", 
    "_id": "AVxinqK5XRvft8kN7Q6M", 
    "_version": 1, 
    "_score": null, 
    "_source": { 
    "username": "Marlb0ro", 
    "email": "[email protected]", 
    "hash": "123456", 
} 

このようにデータを入れます:

{ 
    "_index": "logstash-2017.06.01", 
    "_type": "logs", 
    "_id": "AVxinqK5XRvft8kN7Q6M", 
    "_version": 1, 
    "_score": null, 
    "_source": { 
    "path": "C:/Users/user/Desktop/user/log.txt", 
    "@timestamp": "2017-06-01T07:46:22.488Z", 
    "@version": "1", 
    "host": "DESKTOP-FNGSJ6C", 
    "message": "username email password", 
    "tags": [ 
     "_grokparsefailure" 
    ] 
    }, 
    "fields": { 
    "@timestamp": [ 
     1496303182488 
    ] 
    }, 
    "sort": [ 
    1496303182488 
    ] 
} 
+0

数時間を過ごしていたら、ログストラッシュ設定をブートストラップしている可能性があります。 – Val

+0

はこのパターンを思いついた: %{ワード:ユーザー名}%{ワード:メール}%{ワード:ハッシュ} しかし、私は設定ファイルでそれを設定する方法を理解していない – Marlb0ro

+0

あなたはこれを見てみたいかもしれません質問:https://stackoverflow.com/questions/31884094/logstash-grok-filter-for-custom-logs/32132737#32132737 – Val

答えて

0

単にファイルでこれを入れてはgrok.confと呼ばれる:次に

input { 
     file { 
       path => "/path/to/your/file.log" 
       start_position => beginning 
       sincedb_path => "/dev/null" 
     } 
} 
filter { 
     grok { 
       match => {"message" => "%{WORD:username} %{WORD:email} %{WORD:hash}" } 
     } 
} 
output { 
     elasticsearch { 
       hosts => ["localhost:9200"] 
     } 
} 

bin/logstash -f grok.confでLogstashを実行し、[OK]をする必要があります。

+0

ありがとうございますが、私のフィルタは私の編集を見て悪いと思いますか?私はコメントの中にそれを収めることができませんでした – Marlb0ro

関連する問題