Elasticsearch GROUP BY колонка, имеющая счет> x - PullRequest
0 голосов
/ 19 июня 2019

В SQL, если у меня есть пример таблицы my_site_visits, показывающий, какие страницы посетили пользователи моего сайта:

user_id,url
1,index.html
1,index.html
1,foobar.html
1,index.js
2,a.html
2,b.html
2,index.html
3,foo.js
3,foo.js
4,bar.js

, тогда я могу найти пользователей, которые посетили более одной уникальной страницы, например,

SELECT user_id, COUNT(*) unique_pages_visited
FROM (
    SELECT DISTINCT user_id, url
    FROM my_site_visits
)
GROUP BY user_id
HAVING unique_pages_visited > 1

Результат:

user_id,unique_pages_visited
1,3
2,3

Есть ли способ сделать это в Elastic, если предположить, что JSON, добавленный в Elastic, имеет аналогичную форму, например,

{
    "user_id": n,
    "url": string,
    [Various other Elastic headers]
}

ТакжеМожно ли это сделать в Kibana, или мне нужно написать скрипт для генерации Elastic-запроса?

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете попробовать запрос на перевод SQl в kibana.

НапримерPOST _xpack / sql / translate{"query": "SELECT * FROM IndexName WHERE id = 1","fetch_size": 10}

Поместите ваш запрос с именем индекса вместе с запросом SQL и именем столбца (имя должно совпадать при упругом поиске).

Пожалуйста, отметьте ответ, если это решит вашу проблему.Спасибо

...