2017-08-08 13 views
1

私はphpelasticsearchを使用していますが、ジオ距離クエリで検索したいのですが、Googleでいくつかの記事を読んだ後には、現在のインデックス付きコードにgeo locationを追加する必要があります追加します。elasticsearchインデックスに地理位置を追加するには

$indexed = $client->index([ 
    'index' => 'users', 
    'type' => 'user', 
    'body' => [ 
     'name' => $name, 
     'email' => $email, 
     'company' => $company, 
     'phone' => $phone, 
     'streetAddress' => $streetAddress, 
     'route' => $route, 
     'city' => $locality, 
     'state' => $state, 
     'postalCode' => $postalCode, 
     'country' => $country, 
     'latitude' => $latitude, 
     'longitude' => $longitude, 
     'content' => $content, 
     'date' => strtotime(date('Y-m-d H:i:s')) 
    ] 
]); 

私はこのGeo Location and Search記事を参照が、検索クエリを実装し、使用する方法任意のアイデアを得ていないのです。

ありがとうございました。あなたはこのように、場所を注入する必要があるドキュメント内

答えて

0

$indexed = $client->index([ 
'index' => 'users', 
'type' => 'user', 
'body' => [ 
    'name' => $name, 
    'email' => $email, 
    'company' => $company, 
    'phone' => $phone, 
    'streetAddress' => $streetAddress, 
    'route' => $route, 
    'city' => $locality, 
    'state' => $state, 
    'postalCode' => $postalCode, 
    'country' => $country, 
    'content' => $content, 
    'date' => strtotime(date('Y-m-d H:i:s')), 
    'location' => [ 
     'lat' => $latitude, 
     'lon' => $longitude 
    ] 
] 
]); 

また、あなたの文書にプロパティ(mapping)を追加する必要があります。あなたの弾性検索などへ

PUT要求:localhost:9200/users/_mapping/user

"properties" : { 
     "location" : { 
      "type" : "geo_point" 
     } 
    } 

、あなたがこのように送信クエリで:

{ "場所"::{ "タイプ": "geo_point" }} `この私が` "プロパティ" を追加する必要がどこ
{ 
"filtered" : { 
    "query" : { 
    }, 
    "filter" : { 
     "geo_distance" : { 
      "distance" : "12km", 
      "user.location" : { 
       "lat" : 40, 
       "lon" : -70 
      } 
     } 
    } 
} 
} 
+0

あなたは私を導いてくださいことはできますか? –

+0

あなたのドキュメントのマッピングでは、あなたは '_mapping/user'に投稿要求を送ることで手動で行うことができます。マッピングドキュメントを見た方が良いでしょう –

+0

私はマッピングについて考えていませんが、 $ query = $ client-> search( 'body' => [ 'sort' => [ 'date' => ['order' => 'desc'] ]、 'query' => [ 'ブール' => [ 'すべきである' => [ '試合' => [$フィルタ=> $ Q] ] ] ] ] ]); ' –

関連する問題