Я пытаюсь реализовать Elasticsearch в моем алгоритме общественного транспорта, чтобы получить данные GTFS, но не знаю, что является «лучшим» способом получения необходимых мне данных (Примечание: I используя NEST в C#).Многопользовательский поиск ElasticSearch NEST C#
Я индексировали 2 класса:
public class StopTimes : IGTFS
{
public string trip_id;
public string arrival_time;
public string departure_time;
public string stop_id;
public string stop_sequence;
public string stop_headsign;
public string shape_dist_traveled;
}
public class Trips : IGTFS
{
public string route_id;
public string service_id;
public string trip_id;
public string trip_head_sign;
public string trip_short_name;
public string direction_id;
public string shape_id;
}
Я интересно, как я могу, из stop_id
, получить все соответствующие route_id
в простом запросе (остановка может принадлежать нескольким маршрутам).
В настоящее время я пытаюсь сделать это в 2 этапа, зная, что stop_id
могут быть сопоставлены в нескольких StopTimes
и несколько trip_id
с принадлежат одному route_id
(я имею 6k trip_id
с для 8 route_id
с).
Я получаю все данные о
StopTimes
(более чем 2k хитов), гдеstop_id
матч.var result = _client.Search(s => s .Index("gtfs_data") .Type("stoptimes") .Fields("trip_id") .Query(q => q .Term("stop_id", id)).Size(10000000) );
Тогда я пытаюсь получить
route_id
в поездках, но я не знаю, как поступить (фасеты?)var result2 = _client.Search<Trips>(s => s .Index(_ratpData) .Query(q => q .Terms(t => t.trip_id, terms)) //terms = array of stop_id .FacetTerm(t=>t .OnField(f=>f.route_id).Size(10000000)) );
Спасибо за помощь :)
Спасибо за ответ, я не думал о родителях, я попробую именно так :) – Orelus