gpt4 book ai didi

mysql - 如何将SQL查询转换为ElasticSearch样式?

转载 作者:行者123 更新时间:2023-11-29 09:30:39 28 4
gpt4 key购买 nike

我对MySQL有一个复杂的查询,它计算每天的唯一访问次数。我想使用 ElasticSearch 加快速度。

想象一个像这样的表格:

  • id |站点 ID |创建于 ________ | 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

:时区是一个像180这样的整数

:site_id 是一个整数,例如 40

相同但有替换:

    SELECT day, COUNT(*) as cnt
FROM (SELECT DISTINCT stat_cookie_hash, DATE(DATE_ADD(created_at, 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 框架并且可以向我展示如何使用 yii2-elasticsearch 扩展重写 SQL 查询,那就太好了。

最佳答案

Yii2 elasticsearch guide会帮助你的。

但在我看来,它不会帮助你加快速度。您可以使用memcache并缓存sql结果。

我建议您将访问计数存储在缓存中并定期更新sql。

考虑到elasticsearch没有“GROUP BY”

关于mysql - 如何将SQL查询转换为ElasticSearch样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58807129/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com