나는 json 파일을 가지고 있는데, 이것을 반복하여 탄성을 가지고 색인을 붙인다. 그 후에는 내 데이터를 검색 할 수 있기를 원합니다.elasticsearch의 PHP 전문 검색
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을 가지고 기록 될 것으로 기대
이 내 JSON 파일입니다 ","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
하지만, 행운, : 링크를 탄성 방문에서 와일드 카드에 대한 자세한 내용은
. '쿼리'=> "*"$ _GET [ 'query']. "*" – mhndev