0

我有一个大型 Windows 事件日志集,我试图从单个事件 ID 的单个列中查找用户的唯一列表。这会运行,但需要很长时间。您将如何使用 pythonElasticsearch_dslElasticsearch-py完成此任务?

    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列包含窗口的事件 ID 字符串。

4

1 回答 1

4

您需要使用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)
于 2017-01-05T04:08:44.023 回答