В настоящее время мы используем AWS RDS (Mysql) + Pandas. У нас есть заказ, клиенты, таблицы продуктов и так далее. Чтобы получать клиентов и проводить кампанию на основе различных фильтров (всего 18 фильтров) для этих клиентов, требуется слишком много времени. Сама таблица «Order» имеет величину в миллион строк. Итак, чтобы ускорить работу Мы начали делать poc с elasticsearch, поскольку наши фильтры содержат слишком много текстовых запросов, например, «имя продукта», «имя поставщика» и т. Д.ускорить процесс резки клиентов mysql
Проблема, которую мы сталкиваемся с является 1) Фильтрация по AOV ведре (среднее значение порядка), с relavent детали документа также 2) Фильтрация на ордена подсчитывать 3) Фильтрация по first_order_date и last_order_date
Наш документ структура
{
"order_id":"6",
"customer_id":"1",
"customer_name":"shailendra",
"mailing_addres":"[email protected]",
"actual_order_date":"2000-04-30",
"is_veg":"0",
"total_amount":"2499",
"store_id":"276",
"city_id":"12",
"payment_mode":"cod",
"is_elite":"0",
"product":["1","2"],
"coupon_id":"",
"client_source":"1",
"vendor_id":"",
"vendor_name: "",
"brand_id":"",
"third_party_source":""
}
это запрос,
{
"aggs": {
"customer_ids":{
"terms":{
"field":"customer_id"
}
}
}
}
он дал результаты, как
{
"took": 13,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 8,
"max_score": 1,
"hits": [
{
"_index": "customers4",
"_type": "details",
"_id": "5",
"_score": 1,
"_source": {
"order_id": "5",
"customer_id": "5",
"customer_name": "ashish",
"mailing_addres": "[email protected]",
"actual_order_date": "2016-05-30",
"is_veg": "1",
"total_amount": "300",
"store_id": "2",
"city_id": "",
"payment_mode": "cod",
"is_elite": "0",
"product": [
"1",
"2"
],
"coupon_id": "",
"client_source": "1",
"vendor_id": "",
"brand_id": "",
"third_party_source": ""
}
},
{
"_index": "customers4",
"_type": "details",
"_id": "8",
"_score": 1,
"_source": {
"order_id": "8",
"customer_id": "2",
"customer_name": "nikhil",
"mailing_addres": "[email protected]",
"actual_order_date": "2016-05-30",
"is_veg": "0",
"total_amount": "249",
"store_id": "2",
"city_id": "",
"payment_mode": "cod",
"is_elite": "0",
"product": [
"1",
"2"
],
"coupon_id": "",
"client_source": "1",
"vendor_id": "",
"brand_id": "",
"third_party_source": ""
}
},
{
"_index": "customers4",
"_type": "details",
"_id": "2",
"_score": 1,
"_source": {
"order_id": "2",
"customer_id": "2",
"customer_name": "nikhil",
"mailing_addres": "[email protected]",
"actual_order_date": "2016-01-30",
"is_veg": "1",
"total_amount": "255",
"store_id": "1",
"city_id": "",
"payment_mode": "cod",
"is_elite": "0",
"product": [
"1",
"2",
"3"
],
"coupon_id": "",
"client_source": "1",
"vendor_id": "",
"brand_id": "",
"third_party_source": ""
}
},
{
"_index": "customers4",
"_type": "details",
"_id": "4",
"_score": 1,
"_source": {
"order_id": "4",
"customer_id": "4",
"customer_name": "vivek",
"mailing_addres": "[email protected]",
"actual_order_date": "2016-04-30",
"is_veg": "0",
"total_amount": "249",
"store_id": "2",
"city_id": "",
"payment_mode": "cod",
"is_elite": "0",
"product": [
"1",
"2"
],
"coupon_id": "",
"client_source": "1",
"vendor_id": "",
"brand_id": "",
"third_party_source": ""
}
},
{
"_index": "customers4",
"_type": "details",
"_id": "6",
"_score": 1,
"_source": {
"order_id": "7",
"customer_id": "1",
"customer_name": "shailendra",
"mailing_addres": "[email protected]",
"actual_order_date": "2016-05-30",
"is_veg": "0",
"total_amount": "249",
"store_id": "2",
"city_id": "",
"payment_mode": "cod",
"is_elite": "0",
"product": [
"1",
"2"
],
"coupon_id": "",
"client_source": "1",
"vendor_id": "",
"brand_id": "",
"third_party_source": ""
}
},
{
"_index": "customers4",
"_type": "details",
"_id": "1",
"_score": 1,
"_source": {
"order_id": "1",
"customer_id": "1",
"customer_name": "shailendra",
"mailing_addres": "[email protected]",
"actual_order_date": "2016-01-30",
"is_veg": "1",
"total_amount": "251",
"store_id": "1",
"city_id": "",
"payment_mode": "cod",
"is_elite": "0",
"product": [
"1",
"2",
"3"
],
"coupon_id": "",
"client_source": "1",
"vendor_id": "",
"brand_id": "",
"third_party_source": ""
}
},
{
"_index": "customers4",
"_type": "details",
"_id": "7",
"_score": 1,
"_source": {
"order_id": "6",
"customer_id": "4",
"customer_name": "vivek",
"mailing_addres": "[email protected]",
"actual_order_date": "2016-05-30",
"is_veg": "0",
"total_amount": "249",
"store_id": "2",
"city_id": "",
"payment_mode": "cod",
"is_elite": "0",
"product": [
"1",
"2"
],
"coupon_id": "",
"client_source": "1",
"vendor_id": "",
"brand_id": "",
"third_party_source": ""
}
},
{
"_index": "customers4",
"_type": "details",
"_id": "3",
"_score": 1,
"_source": {
"order_id": "3",
"customer_id": "3",
"customer_name": "manish",
"mailing_addres": "[email protected]",
"actual_order_date": "2016-03-30",
"is_veg": "0",
"total_amount": "249",
"store_id": "2",
"city_id": "",
"payment_mode": "cod",
"is_elite": "0",
"product": [
"1",
"2"
],
"coupon_id": "",
"client_source": "1",
"vendor_id": "",
"brand_id": "",
"third_party_source": ""
}
}
]
},
"aggregations": {
"customer_ids": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1",
"doc_count": 2
},
{
"key": "2",
"doc_count": 2
},
{
"key": "4",
"doc_count": 2
},
{
"key": "3",
"doc_count": 1
},
{
"key": "5",
"doc_count": 1
}
]
}
}
}
здесь, как и можно видеть только граф документ возвращается. мы хотим, чтобы все поля документа вместе с номером doc
Можете ли вы показать, какие запросы вы пробовали до сих пор и как они не подходят для достижения того, чего вы хотите? – Val
это основные { "Aggs": { " customer_ids": { "термины": { "поле": "customer_id" }} }} – user6720627