在Elasticsearch查询中聚合变化稍有不同的网址

时间:2019-01-18 17:21:05

标签: elasticsearch elastic-stack

我是Elastic搜索和学习工具工作原理的新手。我有一个“审核”数据库,其中包含对应用程序中不同端点的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的计数。

在Elasticsearch中推荐这样做的方法是什么?

我能想到的一件事是,elasticsearch本身不是责任,也许我在编写文档时应该对其进行预处理。所以也许我可以将其存储为

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

即使在那种情况下,确定URL的哪些部分是可变的也不是一件容易的事,因此,即使我没有手动指定所有可能出现的URL,也可能无法做到。

我还注意到elasticsearch具有数据聚合功能,但是我不确定它是否足够灵活以支持我的需求。

有什么建议吗?

0 个答案:

没有答案