2016-11-03 12 views
2

私はそれをループして弾力的にインデックスを付けるjsonファイルを持っています。その後、自分のデータを検索できるようにしたいと考えています。elasticsearchのphp全文検索

これは私のJSONファイルです:

https://github.com/mhndev/iran-geography/blob/master/tehran_intersection.json

次のようになります。私のクエリがあるとき

{ 
    "RECORDS":[ 
     { 
     "first":{ 
      "name":"ابن بابویه", 
      "slug":"Ibn Babawayh" 
     }, 
     "second":{ 
      "name":"میرعابدینی", 
      "slug":"Myrabdyny" 
     }, 
     "latitude":"35.601605", 
     "longitude":"51.444208", 
     "type":"intersection", 
     "id":1, 
     "search":"ابن بابویه میرعابدینی,Ibn Babawayh Myrabdyny,ابن بابویه تقاطع میرعابدینی,Ibn Babawayh taghato Myrabdyny", 
     "name":"ابن بابویه میرعابدینی", 
     "slug":"Ibn Babawayh Myrabdyny" 
     }, 

... 
] 
} 

: "ミール" は、私は私の結果は「mirabediniを持っていたレコードであることを期待"、" mirdamad "、" samir "、およびこの文字列を含む他のすべての単語。

んだけど、まさに「ミール」

ある単語を取得し、これは、検索のための私のPHPコードです:

$fields = ['search','slug']; 

$params = [ 
    'index' => 'digipeyk', 
    'type' => 'location', 
    'body' => [ 
     'query' => [ 
      'match' => [ 
       'fields' => $fields, 
       'query' => $_GET['query'] 
      ] 
     ], 

    'from' => 0, 
    'size' => 10 
    ] 
]; 



$client = ClientBuilder::create()->build(); 

$response = $client->search($params); 

とインデックスの文書のためにも、この私のPHPコード。

$client = ClientBuilder::create()->build(); 
$deleteParams = ['index' => 'digipeyk']; 
$response = $client->indices()->delete($deleteParams); 

$intersections = json_decode(file_get_contents('data/tehran_intersection.json'), true)['RECORDS']; 
$i = 1; 

foreach($intersections as $intersection){ 

    echo $i."\n"; 

    $params['index'] = 'digipeyk'; 
    $params['id'] = $intersection['id']; 
    $params['type'] = 'location'; 
    $params['body'] = $intersection; 

    $response = $client->index($params); 

    $i++; 
} 

私はPHPの7を使用して2.3

+0

、ない運、このような :リンク以下の弾性訪問中のワイルドカードの詳細については

$fields = ['search','slug']; $params = [ 'index' => 'digipeyk', 'type' => 'location', 'body' => [ 'query' => [ 'wildcard' => [ 'query' => '*'.$_GET['query'].'*' ] ], 'from' => 0, 'size' => 10 ] ]; $client = ClientBuilder::create()->build(); $response = $client->search($params); 

「クエリ」=>「*」$。 _GET ['query']。 "*" – mhndev

答えて