1

GTFS データを取得するために Public Transport アルゴリズムに Elasticsearch を実装しようとしていますが、必要なデータを取得するための「最良の」方法がわかりません (注: C# で NEST を使用しています)。

私は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ます.aは複数で一致する可能性がStopTimesあり、複数trip_idのsは単一に属します(私は8秒でroute_id6kを持っています)。trip_idroute_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))
                   );
    

助けてくれてありがとう :)

4

1 に答える 1