elasticsearch - 在弹性搜索中存储网站 URL 命中数
问题描述
我想记录用户请求的页面。此外,我必须存储请求的每个页面的计数。我目前通过更新弹性搜索中的索引来存储用户的网站页面访问。
我通过更新一个类似于
{
userid : 'id1234',
url : 'website.com/url-1',
count : 23,
}
这里,“23”的计数是 ID 为“id1234”的用户请求 URL 的总次数。
为此,我检索文档,增加当前计数,然后再次推送。我的问题是可以通过单个查询来做到这一点吗?我在这里看到了使用脚本的类似方法。我们可以在没有脚本的情况下做到这一点吗?
解决方案
Elasticsearch 不太适合更新。因此,即使可以进行这样的更新,它也是首先删除记录,然后添加它(整个文档)并重新索引。
这里最接近的可能是使用部分更新功能:
这是文档中的示例:
POST /metrics/users/1/_update
{
"script" : "ctx._source.count+=1"
}
但是您在问题中提到了它(相关文档的链接可在此处获得)
但是如果你使用脚本,问题仍然是它相对较慢
推荐阅读
- accessibility - Office ui fabric Dropdown 读取组件焦点上的选定项
- javascript - 这在 Vue 中是未定义的,使用 debounce 方法
- r - 当时间 t 的行与 t-1 的行不同时,如何在列中查找?
- event-b - 如何在事件 b 中使用公理填充关系
- mysql - 如何从对象内的 MySQL 的 JSON 数组中删除元素?
- angular - 重新加载/提交后,Angular Reactive Form 显示错误
- python - 如何默认为每个功能创建两列(一个热编码)?
- django - 如何将我的表单正在编辑的特定对象传递给 django?
- html - SVG:在弧中插入图像
- javascript - HTML 头部中的两个脚本冲突 (Brython & iFlyChat)