/ / ElasticSearch - изчисляване на съотношението между агрегационните кофи - еластично търсене

ElasticSearch - изчисляване на съотношението между кофата за агрегиране - elasticsearch

Използвам следните обобщения на термините, за да получавам изгледи и кликвания на всяка кампания (от campaign_id)

"aggregations": {
"campaigns": {
"terms": {
"field": "campaign_id",
"size": 10,
"order": {
"_term": "asc"
}
},
"aggregations": {
"actions": {
"terms": {
"field": "action",
"size": 10
}
}
}
}}

Това е отговорът, който получавам:

   "aggregations": {
"campaigns": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "someId",
"doc_count": 12,
"actions": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "click",
"doc_count": 3
},
{
"key": "view",
"doc_count": 9
}
]
}
}
]
}

}

РЕДАКТИРАНЕ: Ето пример за документ (само съответните части от него ..):

{
"_index": "action",
"_type": "click",
"_id": "AVI2XOTl8otXlszOjypT",
"_score": 1,
"_source": {
"ip": "127.0.0.1",
"timestamp": "2016-01-12T15:03:23.622743524Z",
"action": "click",
"campaign_id": "IypmiroC"
}}

Трябва да мога да извличам процента на реализация на всяка кампания (кликвания / изгледи) и не мога да го правя от страна на клиента, тъй като трябва да мога да сортирам по процент на реализация.

Всяка помощ би била много ценена.

Отговори:

4 за отговор № 1

Това ще изисква използването на различни aggregations и ES 2.x, Първо получавам всички уникални кампании с обобщаване на термините, Тогава аз съм филтриране с actions и получаване на броя документи с това конкретно действие. След това трябва да използвате pipeline aggregation въведена в ES 2.0главно агрегация на скрипт да вземем съотношението. Ето как изглежда.

{
"size": 0,
"aggs": {
"unique_campaign": {
"terms": {
"field": "campaign_id",
"size": 10
},
"aggs": {
"click_bucket": {
"filter": {
"term": {
"action": "click"
}
},
"aggs": {
"click_count": {
"value_count": {
"field": "action"
}
}
}
},
"view_bucket": {
"filter": {
"term": {
"action": "view"
}
},
"aggs": {
"view_count": {
"value_count": {
"field": "action"
}
}
}
},
"conversion_ratio": {
"bucket_script": {
"buckets_path": {
"total_clicks": "click_bucket>click_count",
"total_views": "view_bucket>view_count"
},
"script": "total_clicks/total_views"
}
}
}
}
}
}

Също така трябва да имате not_analyzed картографиране за action като Кликнете няма да съвпадат кликване.

Надявам се това да помогне!!