1

У меня есть индекс, URL, который выглядит следующим образом:Elasticsearch: Как фильтровать и группировать по определенным URL-адресам?

path: { 
    type: "string" 
}, 
@timestamp: { 
    type: "date", 
    format: "strict_date_optional_time||epoch_millis" 
}, 

Путь будет хранить раздел PATH из URL, например:

https://facebook.com/profile/photos/album/1 

бы быть сохранены как:

/profile/photos/album/1 

Я храню всякие пути, так что может быть больше как:

/profile/photos/album/1 
/profile/photos/album/2 
/profile/photos/album/2 
/profile/photos/album/2 
/profile/friends/1 
/profile/friends/2 
/newsfeed/me/ 
/newsfeed/me/ 
/newsfeed/friendName/ 

Я пытаюсь выяснить количество уникальных просмотров страниц каждого из путей. Я не знаю, как это сделать, следует ли использовать регулярное выражение?

Я бы себе представить, что бы выглядеть примерно так (псевдо-код):

{ 
    "query": { 
     "regexp": { 
      "path": "" 
     }, 
     "unique": true 
    } 
} 

ответ

0

Так я узнал, как это сделать. Я использую метод aggs & с помощью регулярного выражения, чтобы исключить результаты!

{ 
    "size": 0, // Don't return any _source results 
    "aggs": { 
    "path": { // This is the field that I'm 
     "terms": { 
     "field": "path", 
     "exclude": ".*(media|cache).*" // Add in the values here seper 
     } 
    } 
    } 
} 

Разбивка:

  1. путь
    • Просто метка агрегации
  2. поле (путь)
    • поле, которое я хочу выполнить следующую regex на
  3. исключить
    • Не возвращать документы, в которых путь имеет средства массовой информации или кэш в нем

Я узнал об этом от Elasticsearch: Run aggregation on field & filter out specific values using a regexp not matching values

 Смежные вопросы

  • Нет связанных вопросов^_^