目前,我们的ElasticSearch实例包含大约100米以上的记录,其中包含lat / lng,created_at,item_id和user_id。我们想回答这些问题:
1)在过去的T天里,附近的X,Y中有多少个item_id,半径为Z?
2)在过去的T天中,有多少独特用户是附近的X,Y,半径为Z?
3)在过去的T天内,每个月有多少项目和唯一用户是附近的X,Y,半径为Z,按月分组?
我们已经尝试过MongoDB,MySQL和现在的ElasicSearch,而且我们在性能方面一直处于领先地位(持续低于5秒)。这是迁移到数据仓库模型的唯一解决方案,如Redshift?有人有什么建议吗?
以下是要获取的搜索查询
GET items/item/_search
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"geo_distance": {
"distance": "10mi",
"loc": {
"lat": 40.712784,
"lon": -74.005941
}
}
},
{
"range": {
"cat": {
"gte": "now-1d/d",
"lte": "now/d"
}
}
}
]
}
}
}
},
"aggs": {
"distinct_users": {
"cardinality": {
"field": "uid.hash"
}
},
"distinct_checkins": {
"cardinality": {
"field": "iid.hash"
}
}
},
"size": 1
}