Elasticsearch заказ / время в час в день недели - PullRequest
0 голосов
/ 02 ноября 2019

print("Hello everybody1")

Для моего мастера у меня есть 1 курс программирования, это первый раз, когда курс дается, что приводит к большому количеству проблем. Наше понимание эластичного поиска ограничено. Для задания у меня есть файл с временем прохождения заказа, упорядоченного по дням недели. В настоящее время я борюсь с двумя проблемами, приведенными ниже:

  • среднее время в пути (заказано в час в будний день в неделю). Приведенный ниже код содержит общее количество заказов за день в неделю, я не знаю, как разделить день на часы.
searchbody_total_hours ={
                "size": 0,
                "aggs":{
                    "time_per_hour_per_day_of_week":   {
                        "terms":   {
                            "size": 24,
                            "script":{
                                "lang": "painless",
                                "source": "doc['datetime_of_order'].value.dayOfWeek"
                            }
                        },
                        "aggs": {
                            "number_of_weeks":  {
                                "date_histogram":   {
                                    "field": "datetime_of_order",
                                    "interval": "week"
                                }
                            },
                            "aggs": {
                                "totaltime": {
                                    "sum": {
                                        "field": "travel_time"
                                    }
                                },
                                "average_travel_time":  {
                                    "bucket_script":  {
                                        "buckets_path":  {
                                            "totaltime": "travel_time",
                                            "number_of_weeks": "number_of_weeks._bucket_count"
                                        },
                                        "script": "params.totaltime / params.number_of_weeks"  
                                    }
                                }
                            }
                        }
                    }
                }
}
  • среднее количество заказов (заказано за час в день недели).
searchbody_total_orders = {
        "query":{
            "bool": {
                "must":{
                    "match": {"weekdayName" : "Monday"}
                }
            }
        },
        "aggs": {
            "total_orders_per_hour_per_week_of_day":   {
                "terms":{
                    "size": 15,
                    "script":   {
                        "lang": "painless",
                        "source": "doc['datetime_of_order'].value.hourOfDay"
                    }
                },
                "aggs": {
                    "number_of_weeks":{
                        "date_histogram":{
                            "field": "datetime_of_order",
                            "interval": "week"
                        }
                    },
                    "average_orders_per_hour_per_day_of_week":  {
                        "bucket_script":{
                            "buckets_path": {
                                "doc_count": "_count",
                                "number_of_weeks": "number_of_weeks._bucket_count",

                            },
                            "script": "params.doc_count / params.number_of_weeks"
                        }
                    }   
                }
            }
        }
}

Если у кого-то есть способы улучшить мой код или есть ссылки для получения дополнительной информации, я буду благодарен.

С уважением

Коэн

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