Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

位置情報を用いたElasticsearchの活用事例/crossme-es

Avatar for ssossan ssossan
September 19, 2017

 位置情報を用いたElasticsearchの活用事例/crossme-es

Avatar for ssossan

ssossan

September 19, 2017
Tweet

Other Decks in Technology

Transcript

  1. mapping " p r o p e r t i

    e s " : { " l o c a t i o n " : { " t y p e " : " g e o _ p o i n t " } , " u p d a t e d A t " : { " t y p e " : " l o n g " } } type: 型をgeo_point とすることで、 位置情報として扱うことができる
  2. query " b o o l " : { "

    m u s t " : [ { " r a n g e " : { " u p d a t e d A t " : { " g t " : s i n c e } } } , { " g e o _ d i s t a n c e " : { " l o c a t i o n " : [ l a t , l o n ] , " d i s t a n c e " : d i s t a n c e , " d i s t a n c e _ t y p e " : d i s t a n c e T y p e } } ] } distance miles(mi), centimeters(cm), kilometers(km) など単位付で指定 " d i s t a n c e " : " 1 0 0 c m " distance_type arc: デフォルト plane: 高速だが、 長距離や北極南極の近くでは不正確
  3. mapping " p r o p e r t i

    e s " : { " l o c a t i o n " : { " t y p e " : " g e o _ p o i n t " } , " p r e f " : { " t y p e " : " s t r i n g " } , " p r e f I d " : { " t y p e " : " s t r i n g " } , " c i t y " : { " t y p e " : " s t r i n g " } , " c i t y I d " : { " t y p e " : " s t r i n g " } , " s t r e e t " : { " t y p e " : " s t r i n g " } , " s t r e e t I d " : { " t y p e " : " s t r i n g " } }
  4. data { " i n d e x " :

    { " _ t y p e " : " r e v e r s e G e o c o d i n g " , " _ i d " : 1 0 0 0 0 0 } } { " l o c a t i o n " : { " l a t " : 3 7 . 2 6 8 9 3 2 , " l o n " : 1 4 0 . 3 6 4 9 1 5 } , " p r e f I d " : " 0 7 " , " p r e f " : " 福島県" , " c i t y I d " { " i n d e x " : { " _ t y p e " : " r e v e r s e G e o c o d i n g " , " _ i d " : 1 0 0 0 0 1 } } { " l o c a t i o n " : { " l a t " : 3 7 . 2 5 0 1 2 7 , " l o n " : 1 4 0 . 3 2 3 9 0 4 } , " p r e f I d " : " 0 7 " , " p r e f " : " 福島県" , " c i t y I d " { " i n d e x " : { " _ t y p e " : " r e v e r s e G e o c o d i n g " , " _ i d " : 1 0 0 0 0 2 } } { " l o c a t i o n " : { " l a t " : 3 7 . 2 3 8 0 0 8 , " l o n " : 1 4 0 . 3 2 1 6 5 0 } , " p r e f I d " : " 0 7 " , " p r e f " : " 福島県" , " c i t y I d " . . .
  5. query " b o o l " : { "

    m u s t " : { " g e o _ d i s t a n c e " : { " l o c a t i o n " : { " l a t " : l a t , " l o n " : l o n , } , " d i s t a n c e " : d i s t a n c e } } } distance miles(mi), centimeters(cm), kilometers(km) など単位付で指定 " d i s t a n c e " : " 1 0 0 c m "
  6. sort " s i z e " : 1 ,

    " s o r t " : [ { " _ g e o _ d i s t a n c e " : { " l o c a t i o n " : [ { " l a t " : l a t , " l o n " : l o n } ] } } ] _geo_distance: 距離が近い順にソー ト, o r d e r : d e s c も指定可
  7. mapping " p r o p e r t i

    e s " : { " l o c a t i o n " : { " t y p e " : " g e o _ s h a p e " , " t r e e " : " q u a d t r e e " , " d i s t a n c e _ e r r o r _ p c t " : d i s t a n c e E r r o r P c t } , " i m a g e I d " : { " t y p e " : " s t r i n g " } } tree: GeohashPrefixTree, QuadPrefixTree のいずれかを選択 distance_error_pct: シェイプのサイズに基づいて許容される最大誤差, デフォルトは2.5% orientation: 頂点の解釈方法, デフォルト反時計回り
  8. data { " i n d e x " :

    { " _ t y p e " : " l o c a t i o n s " , " _ i d " : 0 } } { " l o c a t i o n " : { " t y p e " : " p o l y g o n " , " c o o r d i n a t e s " : [ [ [ 1 3 9 . 7 4 3 1 7 5 5 0 6 5 9 1 8 , 3 5 . 6 3 7 8 7 1 5 7 5 3 4 2 4 7 ] , [ { " i n d e x " : { " _ t y p e " : " l o c a t i o n s " , " _ i d " : 1 } } { " l o c a t i o n " : { " t y p e " : " p o l y g o n " , " c o o r d i n a t e s " : [ [ [ 1 3 9 . 7 8 8 7 5 1 6 0 2 1 7 2 8 5 , 3 5 . 6 6 7 6 8 6 6 8 2 8 7 2 4 ] , [ { " i n d e x " : { " _ t y p e " : " l o c a t i o n s " , " _ i d " : 2 } } { " l o c a t i o n " : { " t y p e " : " p o l y g o n " , " c o o r d i n a t e s " : [ [ [ 1 3 9 . 7 5 8 2 8 1 7 0 7 7 6 3 6 7 , 3 5 . 6 6 8 4 3 6 2 7 6 0 3 7 9 7 . . .
  9. query " g e o _ s h a p

    e " : { " l o c a t i o n " : { " s h a p e " : { " t y p e " : " p o i n t " , " c o o r d i n a t e s " : [ l a t , l o n ] } } } type: point, envelope( 左上と右下の緯度経度を指定), polygon などを指定 coordinates: 緯度経度情報を格納