Кибана с использованием регулярных выражений не работает, как ожидалось - PullRequest
0 голосов
/ 20 октября 2018

Я совершенно новичок в использовании поиска Kibana и Elastic, но у меня он работает и могу без проблем искать по строкам и т. Д.

Но я хочу выполнить поиск по этому регулярному выражению

threshold of 1000 ms: ([5-9],\d+|[1-9][0-9],\d+|[1-9][0-9][0-9],\d+)

Который работает как проверено, используя https://regex101.com/ и используя Блокнот ++.Но я не могу заставить его работать в Кибане, независимо от того, что я пытаюсь.

Я пытался изменить индексированное поле на ключевое слово вместо текста, но все равно не работает.

Даже простойрегулярное выражение типа

message:/192.168.99.[0-9]{3}/

Не работает так, как вы ожидаете.

Может кто-нибудь предложить способ заставить это работать, пожалуйста?Это сводит меня с ума.

Я должен упомянуть, что я использую Filebeat 6.4.2, Elasticsearch 6.4.2 и Kibana 6.4.2

Спасибо

MAPPING

"mappings": {
  "doc": {
    "date_detection": false,
    "properties": {
      "@timestamp": {
        "type": "date"
      },
      "@version": {
        "type": "long"
      },
      "CorrelationId": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "InteractionNumber": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "RequestorId": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "alertType": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "app": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "beat": {
        "properties": {
          "hostname": {
            "type": "keyword",
            "ignore_above": 1024
          },
          "name": {
            "type": "keyword",
            "ignore_above": 1024
          },
          "version": {
            "type": "keyword",
            "ignore_above": 1024
          }
        }
      },
      "host": {
        "properties": {
          "name": {
            "type": "keyword",
            "ignore_above": 1024
          }
        }
      },
      "input": {
        "properties": {
          "type": {
            "type": "keyword",
            "ignore_above": 1024
          }
        }
      },
      "level": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "logger_name": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "message": {
        "type": "keyword"
      },
      "nodeId": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "offset": {
        "type": "long"
      },
      "pegathread": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "prospector": {
        "properties": {
          "type": {
            "type": "keyword",
            "ignore_above": 1024
          }
        }
      },
      "source": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "source_host": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "src-env": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "src-node": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "src-vm": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "stack": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "tenantid": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "thread_name": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "userid": {
        "type": "keyword",
        "ignore_above": 1024
      },
      "x-requested-with": {
        "type": "keyword",
        "ignore_above": 1024
      }
    }
  }
}

Пример содержимого поля сообщения

2018-10-20 23:10:21,068 GMT*8*PEGA0001*8087*1000*8ce767fc2b32*NA*NA*HKVZWM7PHSLMGR3ZXP4OEKEBG3DFFS30K*Test.User*Case-CAS-FS-Work-Svc*Solution:01.03.01*00cb8b6febb234d359369e54a60a865f*Y*3*HKVZWM7PHSLMGR3ZXP4OEKEBG3DFFS30K*35*http-apr-8080-exec-26*STANDARD*com.pega.pegarules.session.internal.engineinterface.service.HttpAPI*192.168.99.100|192.168.99.1*Activity=Pega-UI-CommandPalette.pzGetPaletteOptions*Rule-Obj-Activity:pzGetPaletteOptions*PEGA-UI-COMMANDPALETTE PZGETPALETTEOPTIONS #20161123T194957.445 GMT Step: 2 Circum: 0*NA*****pxRDBIOElapsed=0.03;pxRDBIOCount=4;pxRunStreamCount=811;pxTotalReqCPU=2.81;pxRunModelCount=270;pxOutputBytes=584,268;pxRunWhenCount=1,904;pxDeclarativePageLoadElapsed=6.84;pxRulesExecuted=3,471;pxOtherCount=314;pxDBInputBytes=3,553,909;pxTotalReqTime=8.09;pxActivityCount=967;pxAlertCount=1;pxOtherFromCacheCount=66;pxInteractions=1;pxLegacyRuleAPIUsedCount=1;pxRuleCount=254;pxInputBytes=101;pxRuleIOElapsed=0.09;pxRulesUsed=4,262;pxDeclarativePageLoadCount=6;pxRuleFromCacheCount=254;pxOtherIOElapsed=0.99;pxTrackedPropertyChangesCount=106;pxOtherIOCount=255;*NA*NA*NA*NA*NA*pyActivity=Pega-UI-CommandPalette.pzGetPaletteOptions;primaryPageClass=Data-Portal-DesignerStudio;*HTTP interaction has exceeded the elapsed time alert threshold of 1000 ms: 8088 ms.*

Добавлен тип сообщения в виде строки, и это результаты _analyze: -

{
  "token": "threshold",
  "start_offset": 1276,
  "end_offset": 1285,
  "type": "<ALPHANUM>",
  "position": 128
},
{
  "token": "of",
  "start_offset": 1286,
  "end_offset": 1288,
  "type": "<ALPHANUM>",
  "position": 129
},
{
  "token": "1000",
  "start_offset": 1289,
  "end_offset": 1293,
  "type": "<NUM>",
  "position": 130
},
{
  "token": "ms",
  "start_offset": 1294,
  "end_offset": 1296,
  "type": "<ALPHANUM>",
  "position": 131
},
{
  "token": "8088",
  "start_offset": 1298,
  "end_offset": 1302,
  "type": "<NUM>",
  "position": 132
},
{
  "token": "ms",
  "start_offset": 1303,
  "end_offset": 1305,
  "type": "<ALPHANUM>",
  "position": 133
}

1 Ответ

0 голосов
/ 23 октября 2018

Проверено на версии 6.2.4

Добавлен приведенный ниже индекс с отображением, как показано ниже

    PUT test
{
  "mappings": {
    "_doc": {
      "properties": {
        "message": {
          "type": "text"
        },
        "message2": {
          "type": "keyword"
        }
      }
    }
  }
}

Добавлен 2 документа в указатель, как показано ниже

PUT test/_doc/1?refresh
{
  "message": "hellothere",
  "message2":"2018-10-20 23:10:21,068 GMT*8*PEGA0001*8087*1000*8ce767fc2b32*NA*NA*HKVZWM7PHSLMGR3ZXP4OEKEBG3DFFS30K*Test.User*Case-CAS-FS-Work-Svc*Solution:01.03.01*00cb8b6febb234d359369e54a60a865f*Y*3*HKVZWM7PHSLMGR3ZXP4OEKEBG3DFFS30K*35*http-apr-8080-exec-26*STANDARD*com.pega.pegarules.session.internal.engineinterface.service.HttpAPI*192.168.99.100|192.168.99.1*Activity=Pega-UI-CommandPalette.pzGetPaletteOptions*Rule-Obj-Activity:pzGetPaletteOptions*PEGA-UI-COMMANDPALETTE PZGETPALETTEOPTIONS #20161123T194957.445 GMT Step: 2 Circum: 0*NA*****pxRDBIOElapsed=0.03;pxRDBIOCount=4;pxRunStreamCount=811;pxTotalReqCPU=2.81;pxRunModelCount=270;pxOutputBytes=584,268;pxRunWhenCount=1,904;pxDeclarativePageLoadElapsed=6.84;pxRulesExecuted=3,471;pxOtherCount=314;pxDBInputBytes=3,553,909;pxTotalReqTime=8.09;pxActivityCount=967;pxAlertCount=1;pxOtherFromCacheCount=66;pxInteractions=1;pxLegacyRuleAPIUsedCount=1;pxRuleCount=254;pxInputBytes=101;pxRuleIOElapsed=0.09;pxRulesUsed=4,262;pxDeclarativePageLoadCount=6;pxRuleFromCacheCount=254;pxOtherIOElapsed=0.99;pxTrackedPropertyChangesCount=106;pxOtherIOCount=255;*NA*NA*NA*NA*NA*pyActivity=Pega-UI-CommandPalette.pzGetPaletteOptions;primaryPageClass=Data-Portal-DesignerStudio;*HTTP interaction has exceeded the elapsed time alert threshold of 1000 ms: 8088 ms.*" 
} 


PUT test/_doc/2?refresh
{
  "message": "2018-10-20 23:10:21,068 GMT*8*PEGA0001*8087*1000*8ce767fc2b32*NA*NA*HKVZWM7PHSLMGR3ZXP4OEKEBG3DFFS30K*Test.User*Case-CAS-FS-Work-Svc*Solution:01.03.01*00cb8b6febb234d359369e54a60a865f*Y*3*HKVZWM7PHSLMGR3ZXP4OEKEBG3DFFS30K*35*http-apr-8080-exec-26*STANDARD*com.pega.pegarules.session.internal.engineinterface.service.HttpAPI*192.168.99.100|192.168.99.1*Activity=Pega-UI-CommandPalette.pzGetPaletteOptions*Rule-Obj-Activity:pzGetPaletteOptions*PEGA-UI-COMMANDPALETTE PZGETPALETTEOPTIONS #20161123T194957.445 GMT Step: 2 Circum: 0*NA*****pxRDBIOElapsed=0.03;pxRDBIOCount=4;pxRunStreamCount=811;pxTotalReqCPU=2.81;pxRunModelCount=270;pxOutputBytes=584,268;pxRunWhenCount=1,904;pxDeclarativePageLoadElapsed=6.84;pxRulesExecuted=3,471;pxOtherCount=314;pxDBInputBytes=3,553,909;pxTotalReqTime=8.09;pxActivityCount=967;pxAlertCount=1;pxOtherFromCacheCount=66;pxInteractions=1;pxLegacyRuleAPIUsedCount=1;pxRuleCount=254;pxInputBytes=101;pxRuleIOElapsed=0.09;pxRulesUsed=4,262;pxDeclarativePageLoadCount=6;pxRuleFromCacheCount=254;pxOtherIOElapsed=0.99;pxTrackedPropertyChangesCount=106;pxOtherIOCount=255;*NA*NA*NA*NA*NA*pyActivity=Pega-UI-CommandPalette.pzGetPaletteOptions;primaryPageClass=Data-Portal-DesignerStudio;*HTTP interaction has exceeded the elapsed time alert threshold of 1000 ms: 8088 ms.*",
  "message2":"hellothere" 
}

Поиск message2: /192.168.99.[0-9]{3}/ результатов в 0 результатах

Поиск message: /192.168.99.[0-9]{3}/ результатов в документе # 2

Поиск message2: /.*192.168.99.[0-9]{3}.*/ результатов в документе # 1

Поиск message: /pegarules.session/ результат 0

Но поиск message: /.*pegarules.session.*/ приводит к документу # 1, потому что инвертированный индекс имеет "token": "com.pega.pegarules.session.internal.engineinterface.service.httpapi"

Поиск message2: /.*pegarules.session.*/ приводит к документу # 1`

Итак,поданное сообщение (тип text) является токенизированным, и поиск регулярных выражений по шаблонам токенов-шаблонов возвращает результаты.

Где как, поле message2 (тип keyword) не анализируется и вставляется в инвертированный индекс как есть.Поиск по шаблону, например 192.168.99.[0-9]{3}, ничего не возвращает, если только мы не добавим жадный квантификатор (. *)

Механизм регулярных выражений Lucene не является Perl-совместимым, но поддерживает меньший диапазон операторов, поэтому он может не работатьи результаты матчей, такие как регулярное регулярное выражение.

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax

...