【问题标题】:Indexing and mapping log data using solr 6使用 solr 6 索引和映射日志数据
【发布时间】:2016-06-22 03:03:53
【问题描述】:

目前我正在使用 solr 6,我想索引如下所示的日志数据:

2016-06-22T03:00:04Z|INFO|ip-10-11-0-241|1301|DreamRocket.Game.ServiceInterface.GameCredentialsAuthProvider|DreamRocket.Game.ServiceInterface.GameCredentialsAuthProvider.CheckValidGameDataRequestFilter|无效 用户代理=%E3%83%94%E3%82%B3/1.07.41149 CFNetwork/758.2.8 达尔文/15.0.0, PlayerId=player_a2a7d1a4-0a31-4c4d-b5bf-10be67dc85d6|

我不确定如何通过管道分隔数据。我在 Nlog 中使用的布局是这样的。

${date:universalTime=True:format=yyyy-MM-ddTHH\:mm\:ssZ}|${level:uppercase=true}|${machinename}|${processid}|${logger}|${callsite:className=true:methodName=true}|${message}|${exception:format=tostring}${newline}

我尝试使用 CSV 上传,但 solr 给了我下面的 json 返回。不利于做查询。请帮忙

  "responseHeader":{
    "status":0,
    "QTime":77,
    "params":{
      "q":"*:*",
      "indent":"on",
      "wt":"json",
      "_":"1466745065000"}},
  "response":{"numFound":8,"start":0,"docs":[
      {
        "id":"b28049bb-d49e-4b4d-80db-d7d77351527b",
        "2016-06-23T02_37_18Z_INFO_web.chubi.development1_6326_DreamRocket.Game.ServiceInterface.GameCredentialsAuthProvider_DreamRocket.Game.ServiceInterface.GameCredentialsAuthProvider.CheckValidGameDataRequestFilter_Invalid_UserAgent_PIKO_0.00.41269_CFNetwork_711.5.6_Darwin_14.0.0":["2016-06-23T02:37:28Z|INFO|web.chubi.development1|6326|DreamRocket.Game.ServiceInterface.GameCredentialsAuthProvider|DreamRocket.Game.ServiceInterface.GameCredentialsAuthProvider.CheckValidGameDataRequestFilter|Invalid UserAgent=PIKO/0.00.41269 CFNetwork/711.5.6 Darwin/14.0.0"],
        "_PlayerId_player_407defcf-7032-4ef4-81a6-91bb62b9150b_":[" PlayerId=player_905266b2-9ce3-4fa1-b0a7-4663b9509731|"],
        "_version_":1537919142165741568}]}

【问题讨论】:

    标签: solr6


    【解决方案1】:

    看起来您想从日志中提取干净的数据,这些数据可以毫无歧义地被索引和搜索。您为什么不尝试使用创建custom Analyzer 来分析您的数据,该custom Analyzer 使用正则表达式为您过滤数据。我强烈建议 solr.PatternTokenizerFactory 从您的 Text 中删除管道字符。此外,您可以使用 solr 中的 Analysis 选项卡对 Analyzer 如何处理您的日志数据进行详尽的分析。对于编码文本,例如在 Invalid UserAgent 字段中,您可以使用 ASCII Folding filter factory 来索引编码字符。而且您可能还需要在点处标记数据,我不知道这是否是您的要求。在您的数据中,PatternTokenizer 可以解决问题,如果您仍需要进一步改进,您可以使用 solr.WordDelimeter 来更好地调整您的索引。也许我会用一些分析器设置为你编辑这个解决方案:)

    【讨论】:

    • 我想我找到了更好的解决方案。我让我的 nlog 通过 json 格式发送日志。这样更好
    • 你的意思是说在发送之前格式化它并放入 JSON 中吧?是的,那会很棒。
    猜你喜欢
    • 2011-07-04
    • 2013-09-26
    • 2014-12-17
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2017-09-17
    相关资源
    最近更新 更多