我有一个针对 MySQL 的复杂查询,该查询计算每天的唯一访问量。我想使用 ElasticSearch 使其更快。
想象这样一个表:
- id | site_id | created_at ________ | stat_cookie_hash
- 10 | 12346 | 2019-11-11 15:42:24 | sf2f2eghasdh2nvr
- 11 | 12346 | 2019-10-26 09:41:09 | jk67j97jkhjghklj
- 12 | 12346 | 2019-10-26 14:25:01 | vnuoi96iyoui60yu
- 13 | 12346 | 2019-09-01 18:12:54 | zxcqscgscv1vcdcv
结果如下:
- 2019-11-11 | 1
- 2019-10-26 | 2
- 2019-09-01 | 1
SQL 查询本身:
SELECT day,COUNT(*) as cnt
FROM (SELECT DISTINCT stat_cookie_hash,DATE(DATE_ADD(created_at,INTERVAL :timezone MINUTE)) as day
FROM stat_visitor
WHERE site_id=:site_id) AS T
GROUP BY day
ORDER BY day DESC
:timezone是一个整数,例如180
:site_id是一个整数,例如40
同一个,但有替换:
SELECT day,INTERVAL 180 MINUTE)) as day
FROM stat_visitor
WHERE site_id=40) AS T
GROUP BY day
ORDER BY day DESC
ElasticSearch版本:
{
"version" : {
"number" : "7.4.1","build_flavor" : "default","build_type" : "rpm","build_hash" : "fc0eeb6e2c25915d63d871d344e3d0b45ea0ea1e","build_date" : "2019-10-22T17:16:35.176724Z","build_snapshot" : false,"lucene_version" : "8.2.0","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"
}
}
我是ElasticSearch的新手,所以我不知道如何管理它。请帮帮我!
如果您了解Yii2 Framework,并且能向我展示如何重写具有yii2-elasticsearch扩展的SQL查询,那将是非常不错的。