2017-01-04 4 views
0

単一のイベントIDの単一の列からユーザーの一意なリストを検索しようとしている大きなWindowsイベントログがあります。これは実行されますが、非常に長い時間がかかります。あなたはこれを達成するためにどのようにElasticsearch_dslElasticsearch-pyのpythonを使用しますか?Elasticsearch dsl - Pythonの単一列のユニークな大きなリスト

es = Elasticsearch([localhostmines], timeout=30) 
    s = Search(using=es, index="logindex-*").filter('term', EventID="4624") 

    users = set([]) 
    for hit in s.scan(): 
     users.add(hit.TargetUserName) 

    print(users) 

TargetUserName列はEventID列には、Windows用のイベントIDの文字列が含まれ、弦の名前が含まれています。

答えて

2

termsアグリゲーションを使用すると、期待通りの結果が得られます。

s = Search(using=es, index="logindex-*").filter('term', EventID="4624") 
s.aggs.bucket('per_user', 'terms', field='TargetUserName') 

response = s.execute() 
for user in response.aggregations.per_user.buckets: 
    print(user.key, user.doc_count) 
+0

答えてくれてありがとうございます。それはうまくいくように見えますが、私はsearch_phase_execution_exceptionフィールドデータを受け取ることになりますが、デフォルトではテキストフィールドでは無効になっています。それを真に設定する。私はこの設定を軽く変更する能力がないので、これを回避する別の方法を知っていますか?ご協力いただきありがとうございます。 – johnnyb

+0

あなたの 'TargetUserName'フィールドのマッピングを共有できますか?解析されたテキストフィールドである可能性があります。そのフィールドに 'keyword'サブフィールドがありますか? – Val

+0

残念ながら、私はデバイスの管理者ではありません。分析のためにデータを使用しようとしています。データを取得する別の方法がありますか? – johnnyb

関連する問題