我正在为许多用户(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-01
到 2019-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/