我是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具有数据聚合功能,但是我不确定它是否足够灵活以支持我的需求。
有什么建议吗?