我正在为许多用户(5000 万以上)及其每天的综合浏览量编制索引,例如:

{
  "id": 123,
  "name": "foo bar"
  "views_2020_01_01": 1,
  "views_2020_01_02": 2,
  "views_2020_01_03": 3,
  "views_2020_01_04": 4,
  "otherfield": "xxx",
  "yetanotherfield": "yyy",
  "gimmeanotherfield": "zzz",
  "otherfields.......": "....."
  ....
},
{
  "id": 124,
  "name": "bar baz"
  "views_2020_01_01": 4,
  "views_2020_01_02": 3,
  "views_2020_01_03": 2,
  "views_2020_01_04": 1,
  "otherfield": "xxx",
  "yetanotherfield": "yyy",
  "gimmeanotherfield": "zzz",
  "otherfields.......": "....."
  ....
}

我存储了过去 2 年的 View 数据。我们的网络界面可以选择日期范围(例如 2019-06-012019-07-22 )

在这种情况下,当我们在该日期范围内过滤 show me users with more than 5 and less than 20 pageviews 时,我将进行查询:
{!frange l=5 u=11} sum(views_2019-06-01,views_2019-06-02,views_2019-06-03,...,views_2019-07-22)
这是相当缓慢的。我想知道这是否只是不好的做法,或者是否有人有更好的方法来做到这一点。谢谢!

最佳答案

您应该有 2 个集合,1 个用于用户,1 个用于浏览量,然后使用连接查询获取数据。看看这篇文章 Joining Collections in SOLR

关于SOLR:按日期范围过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59821234/

10-16 01:11