Агрегирование URL с немного отличающимися вариациями в запросеasticsearch - PullRequest
0 голосов
/ 18 января 2019

Я новичок в Elastic search и узнаю о том, как работает инструмент. У меня есть база данных «аудита», содержащая записи HTTP-запросов к различным конечным точкам в моем приложении и время их выполнения.

Вы можете представить себе этот вымышленный пример:

18 jan 2018 18:06:00: POST /user/1/books
18 jan 2018 18:07:00: POST /user/3/books
18 jan 2018 18:06:03: GET /books/search?title=Hello
19 jan 2018 17:04:01: GET /books/search?title=AnotherBook&pagesMoreThan=300

В моем примере параметры 1 и 3 и параметры запроса являются переменными частями.

Мне интересно, как лучше построить мои документы, чтобы они могли отвечать на следующие вопросы:

  • Сколько раз кто-то вызывал конечную точку, чтобы получить книги от пользователей за определенный период времени (любого пользователя)?
  • Сколько раз кто-то искал книги (без учета параметров)?

Для этого мне нужно было бы иметь возможность игнорировать переменные части в каждом из URL. Мне нужно было бы получить счет, например, /user/.?/books или /books/search.

Каков рекомендуемый способ сделать это вasticsearch?

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

{
    "url": "/user/?/books",
    "path_parameters": [1]
},
{
    "url": "/books/search",
    "parameters": ["title=AnotherBook", "pagesMoreThan=300"]
}

Даже в этом случае определение того, какие части URL-адреса являются переменными, является непростой задачей, поэтому, возможно, это даже невозможно из-за того, что я не указываю вручную все URL-адреса, которые могут возникнуть.

Я также заметил, чтоasticsearch имеет функции агрегации данных, но я не уверен, что это достаточно гибко, чтобы поддерживать то, что мне нужно.

Есть рекомендации?

...