#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.