【问题标题】:Elasticsearch - query based on event frequencyElasticsearch - 基于事件频率的查询
【发布时间】:2022-01-02 19:36:15
【问题描述】:

我有多个索引来存储用户跟踪日志。其中有 1 个索引是 index-pageview。如何使用IOS操作系统查询2021-12-11到2021-12-13之间浏览页面10次的用户列表?

日志示例: 索引:索引页面浏览量

[
  {
    "user_id": 1,
    "session_id": "xxx",
    "timestamp": "2021-12-11 hh:mm:ss",
    "platform": "IOS"
}, 
{
    "user_id": 1,
    "session_id": "yyy",
    "timestamp": "2021-12-13 hh:mm:ss",
    "platform": "Android"
}
]

【问题讨论】:

  • 请同时添加您的索引映射。
  • 我使用模板索引,没有具体索引。事件的架构如上所示。

标签: elasticsearch elasticsearch-dsl event-tracking


【解决方案1】:

您可以尝试在timestamp 和platform 上构建一个普通的bool 查询,然后在user_id 上构建terms 聚合(可能使用min_doc_count: 10)或collapse。不过,这两种方式都会有一些限制:

  • 聚合可能较慢(需要基准测试)
  • 聚合桶数量有限(默认为10k)
  • collapse 一次最多可处理 size 文档(上限为 10k),因此您可能需要滚动和应用端处理

虽然这些性能可能很差。如果您需要经常运行此类查询,我会考虑使用其他存储(SQL?更花哨的东西?)

【讨论】:

    猜你喜欢
    • 2018-11-14
    • 1970-01-01
    • 2017-02-17
    • 2018-01-02
    • 1970-01-01
    • 2015-04-07
    • 2019-02-20
    • 2020-06-12
    • 2014-10-31
    相关资源
    最近更新 更多