【问题标题】:Format elasticsearch result格式化elasticsearch结果
【发布时间】:2018-11-21 03:55:45
【问题描述】:

我正在使用 Elasticsearch 检索一些日志:

http://localhost:9200/collection/_search?q=type:"log"

它给我带来了一些这样的热门歌曲:

        {
                "_index": "collection",
                "_type": "doc",
                "_id": "UL878GMBYKUUOvfyQJWl",
                "_score": 6.487114,
                "_source": {
                    "@version": "1",
                    "type": "log",
                    "message": "64.242.88.10;[07/Mar/2004:16:11:58 -0800];"GET /twiki/bin/view/TWiki/WikiSyntax HTTP/1.1\"; 200 7352\r",
                    "@timestamp": "2018-06-11T19:03:23.163Z",
                    "host": "logstash",
                    "path": "/opt/access_log.log"
                }
            }

每个命中都有一个“消息”,就像 CSV“access_log.log”中的一行。

但是每个有用的信息都在“消息”中,只是一个大字符串。所以我需要以某种方式提取以识别服务器IP(64.242.88.10)。

如何使用“;”分割这个“消息”字符串作为正则表达式,这样我就可以只获取我需要的数据?

【问题讨论】:

标签: elasticsearch logstash elasticsearch-5 elasticsearch-plugin


【解决方案1】:

您可以为此使用grok filter plugin

Grok 是一种将非结构化日志数据解析为某种东西的好方法 结构化且可查询。

此工具非常适合 syslog 日志、apache 和其他网络服务器日志, mysql日志,一般来说,一般写的任何日志格式 供人类使用,而不是计算机使用。

Logstash 默认提供大约 120 种模式。你可以找到他们 这里: https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns。 您可以添加自己的琐碎。 (参见 patterns_dir 设置)

如果您需要帮助构建模式以匹配您的日志,您会发现 http://grokdebug.herokuapp.comhttp://grokconstructor.appspot.com/ 应用蛮好用的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多