エラスティックサーチ サーバーからキーワード候補のクエリを実行しようとしています。
次のコードは私が試みているものです:
//curl -X GET http://localhost:9200/{INDEX}/{TYPE}/_suggest?q= ...
function suggest($type, $q, $size=5) {
$suggestion = array('my-suggestion' => array('text' => $q,'term' => array('size' => $size, 'field' => 'title')));
return $this->call($type . '/_suggest?' . http_build_query(array('suggest' => $suggestion)));
}
これは 404 エラーを返します。構築する URL の例を次に示します。
http://localhost:9200/{index}/{type}/_suggest?suggest%5Bmy-suggestion%5D%5Btext%5D=test&suggest%5Bmy-suggestion%5D%5Bterm%5D%5Bsize%5D=5&suggest%5Bmy-suggestion%5D%5Bterm%5D%5Bfield%5D=title
提案クエリの詳細は、 http ://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-suggesters.html で概説されています。
同じライブラリの次のものは正しく機能します。
//curl -X GET http://localhost:9200/{INDEX}/{TYPE}/_search?q= ...
function query($type, $q, $start=0, $limit=10, $sort=null) {
if ($sort){
$sort = json_encode($sort);
return $this->call($type . '/_search?' . http_build_query(array('q' => $q, 'from' => $start, 'size' => $limit,"sort" => $sort)));
}
else
return $this->call($type . '/_search?' . http_build_query(array('q' => $q, 'from' => $start, 'size' => $limit)));
}