Elasticsearch PHP Фатальная ошибка: Uncaught TypeError: Аргумент 1 - PullRequest
0 голосов
/ 08 мая 2018

Я новичок в Elasticsearch и PHP в целом. Я пытался выяснить проблему с кодом, который я получил. Я использую WAMP 3.1 с PHP 7.1 и Elasticsearch 6.2.

При переходе на локальный хост я получаю следующую ошибку:

Fatal error: Uncaught TypeError: Argument 1 passed to Elasticsearch\Client::__construct() must be an instance of Elasticsearch\Transport, array given, called in C:\wamp64\www\search\init.php on line 5 and defined in C:\wamp64\www\search\vendor\elasticsearch\elasticsearch\src\Elasticsearch\Client.php:98 Stack trace: #0 C:\wamp64\www\search\init.php(5): Elasticsearch\Client->__construct(Array) #1 C:\wamp64\www\search\index.php(2): require_once('C:\\wamp64\\www\\s...') #2 {main} thrown in C:\wamp64\www\search\vendor\elasticsearch\elasticsearch\src\Elasticsearch\Client.php on line 98

Я вижу, что, возможно, проблема с моим Init.php, но я использую тот, который получил без изменений, поэтому я точно не знаю, в этом ли проблема.

<code>    <?php 
    require_once 'vendor/autoload.php';
    $es = new Elasticsearch\Client([
        'hosts' => ['127.0.0.1:9200']
    ]);

Here is also the index.php.

<?php
require_once 'init.php';
require 'vendor/autoload.php';
use Elasticsearch\ClientBuilder;
$client = Elasticsearch\ClientBuilder::create()->build();

    if (isset($_GET['q'])) {
        $q = $_GET['q'];
        $query = $es->search([
            'body' => [
                'query' => [
                    'bool' => [
                        'should' => [
                            'match' => ['name' => $q],
                            'match' => ['content' => $q]
                            ]
                        ]
                    ]
                ]
            ]);
    }
    echo '<pre>', print_r($query), '
'; if ($ query ['hit'] ['total']> = 1) { $ results = $ query ['hit'] ['hit']; } ?> <! doctype html> поиск | ES <? PHP if (isset ($ results)) { foreach ($ приводит к $ r) { ?>
"> <? Php echo $ r ['_ source'] ['title'];?>
<? php implode (',', $ r ['_ source'] ['Keywords']);?>
<? PHP } } ?>

Я был бы рад предоставить что-нибудь еще, если это необходимо для решения проблемы.

1 Ответ

0 голосов
/ 08 мая 2018

Вам вообще не нужно init (кроме того, вы неправильно используете там класс клиента). Просто сделай:

require_once 'vendor/autoload.php';
use Elasticsearch\ClientBuilder;
$client = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...