Как преобразовать SQL-запрос в стиль ElasticSearch? - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть этот сложный запрос для MySQL , который подсчитывает уникальные посещения за каждый день. Я хочу сделать это быстрее, используя ElasticSearch .

Представьте себе таблицу , например:

  • id |site_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 |внуои96июи60ю
  • 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 Framework и могли бы показать мне, как переписать SQL-запрос с расширением yii2 -asticsearch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...