使用 solr 6 索引和映射日志数据

Indexing and mapping log data using solr 6

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

2016-06-22T03:00:04Z|INFO|ip-10-11-0-241|1301|DreamRocket.Game.ServiceInterface.GameCredentialsAuthProvider|DreamRocket.Game.ServiceInterface.GameCredentialsAuthProvider.CheckValidGameDataRequestFilter|Invalid UserAgent=%E3%83%94%E3%82%B3/1.07.41149 CFNetwork/758.2.8 Darwin/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 return。不利于做查询。请帮忙

  "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}]}

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