фильтровать по параметру uri в kibana

#regex #elasticsearch #kibana

#регулярное выражение #elasticsearch #kibana

Вопрос:

У меня есть конечная точка rest, как показано ниже:

 GET /files/{id}/properties
  

Я хочу отфильтровать эту конечную точку по uri на вкладке kibana discover, но я не знаю, как написать регулярное выражение типа ‘/files / * /properties’ в kibana. Я сохраняю uri конечной точки в поле uri. Как я могу это сделать?

Ответ №1:

Сложно использовать regex непосредственно в kibana, но вы могли бы использовать regex в Kibana Filter, поскольку вы могли бы редактировать фильтр напрямую. Вы могли бы добавить случайный фильтр в свой kibana, а затем щелкнуть, чтобы отредактировать свой фильтр следующим образом: [Работает, если вы используете токенизатор, который не включает в себя / ]

 {
  "query": {
    "regexp": {
      "uri": {
        "value": "/files/.*/properties"
      }
    }
  }
}
  

О том, как добавить и отредактировать фильтр: Смотрите это

Обновить:

Только что попробовал, показалось, что если вы используете токенизатор по умолчанию, ваш URL будет помечен как ["files", "${id}", "properties"] . В таком случае, я думаю, вы не сможете получить полный поиск, используя регулярное выражение. Регулярное выражение работает только с одним словом. Я думаю, что в таком случае вам следует использовать сопоставление фраз:

 {
  "query": {
    "match": {
      "uri": {
        "query": "files properties",
        "type": "phrase",
        "slop": "2"
      }
    }
  }
}
  

Смотрите документацию здесь о совпадении фразы с slop.