在弹性搜索中存储网站URL命中计数

时间:2018-10-15 09:50:19

标签: elasticsearch

我想记录用户请求的页面。另外,我必须存储请求的每个页面的计数。我目前正在通过更新弹性搜索中的索引来存储用户的网站页面访问量。
我是通过更新类似于

的文档来实现的
{
    userid : 'id1234',
    url : 'website.com/url-1',
    count : 23,
}

在这里,计数“ 23”是ID为“ id1234”的用户请求URL的总时间。

为此,我检索了文档,增加了当前计数,然后再次重新按下。我的问题是,可以通过单个查询来做到这一点吗? 我看到了使用脚本here的类似方法。 不用脚本就能做到吗?

1 个答案:

答案 0 :(得分:1)

Elasticsearch不太适合更新。因此,即使有可能进行这样的更新,也要先删除记录,然后再添加(整个文档)并重新编制索引。

可能最近的事情是使用部分更新功能:

以下是文档中的示例:

POST /metrics/users/1/_update
{
   "script" : "ctx._source.count+=1"
}

但是您已经在问题中提到了它(相关文档的链接可用here

但是如果您使用的是脚本,问题仍然在于它相对较慢