elasticsearch-php 401身份验证失败

时间:2015-05-11 08:18:06

标签: php curl elasticsearch laravel-5

通过elasticsearch-php在Laravel 5上使用Shift31/laravel-elasticsearch(为elasticsearch-php提供外观)。在Facetflow上托管ES实例。

配置/ elasticsearch.php:

return array(
    'hosts' => array(
        'https://accessUsername@ilovelasagna.east-us.azr.facetflow.io:443'
    )
);

WelcomeController.php:

public function elasticsearch()
{

    $searchParams['index'] = 'your_index';
    $searchParams['size'] = 50;
    $searchParams['body']['query']['query_string']['query'] = 'foofield:barstring';

    return Es::search($searchParams);
    // throws Authentication401Exception exception
}

返回Authentication401Exception 。我的猜测是用户名未传递给Facetflow服务器,但我还没有找到一种方法来检查这是否属实。

问题似乎不在服务器的设置中,因为当我使用普通卷曲时,我得到200响应:

public function justCurl()
{
    $ch = curl_init();

    // Now set some options (most are optional)

    // Set URL to download
    curl_setopt($ch, CURLOPT_URL, "https://accessUsername@ilovelasagna.east-us.azr.facetflow.io:443");

    // Download the given URL, and return output
    $output = curl_exec($ch);

    // Close the cURL resource, and free system resources
    curl_close($ch);

    return $output;
    // returns 200 response
}

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

Facetflow炙手可热的客户支持指出了这个问题。 主机应该被标记为

'https://accessUsername:@ilovelasagna.east-us.azr.facetflow.io:443'

请注意accessUsername之后的冒号。