php 没有活动节点,所有的1节点似乎都关闭了

h4cxqtbf  于 2023-09-29  发布在  PHP
关注(0)|答案(2)|浏览(142)

Elasticsearch 8.1使用laravel我的elasticsearch示例运行在端口9200。https://localhost:9200返回我

{
  "name" : "node-1",
  "cluster_name" : "my-application",
  "cluster_uuid" : "7wIGGqhBS5OXfV0E4J53GQ",
  "version" : {
    "number" : "8.0.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "801d9ccc7c2ee0f2cb121bbe22ab5af77a902372",
    "build_date" : "2022-02-24T13:55:40.601285296Z",
    "build_snapshot" : false,
    "lucene_version" : "9.0.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

在Laravel中,我有以下几行代码。

$hosts = [
    'http://127.0.0.1:9200',
];
$client = ClientBuilder::create()
    ->setSSLVerification(false)
    ->setHosts($hosts)
    ->build();

$params = [
    'index' => 'sample_index',
    'id' => 'sample_id',
    'body' => [
        'name' => 'Sample Product',
        'description' => 'My description...',
        'price' => '3400',
        'stock' => '150',
    ]
];
$response = $client->index($params);
dump($response);

我得到的$responseNo alive nodes. All the 1 nodes seem to be down.从上面的dump命令中,这是一个请求,不是请求9200(不确定这是否正确)。

bkkx9g8r

bkkx9g8r1#

我也有同样的问题。在python中一切都很好,但在php代码中总是出现这个错误。然后谷歌周围让我下面的文章,一个人有类似的问题
https://github.com/elastic/elasticsearch-php/issues/1120
助手最后指出他需要允许您的httpd连接到网络,并引用了以下解决方案页面:
通过浏览器拒绝了CURL权限,适用于ssh
上面提到的解决方案是在php.ini文件中添加以下行
setsebool -P httpd_can_network_connect 1
然而,对我来说,当我在命令行上用sudo执行这个命令时,它工作了。
希望对你也有效

qgzx9mmu

qgzx9mmu2#

我有同样的问题,在我的情况下,问题是一个不正确的网址,因为它以某种奇怪的方式对待,不能正确地获得传输方案。为了调试我转储异常与

die($e->getTraceAsString());
#0 /home/zaek/vendor/elastic/transport/src/Transport.php(296): Elastic\Transport\NodePool\SimpleNodePool->nextNode()
#1 /home/zaek/vendor/elasticsearch/elasticsearch/src/Client.php(168): Elastic\Transport\Transport->sendRequest(Object(GuzzleHttp\Psr7\Request))
#2 /home/zaek/vendor/elasticsearch/elasticsearch/src/Traits/ClientEndpointsTrait.php(1608): Elastic\Elasticsearch\Client->sendRequest(Object(GuzzleHttp\Psr7\Request))
...

由于Transport.php是异常堆栈中的第一个,我去调试这个文件,发现看到发生错误的唯一方法是将记录器传递给客户端构建器。我懒得去找合适的类,所以我只是用老方法来调试我改变Transport.php:

} catch (NetworkExceptionInterface $e) {
    die(var_dump($e->getMessage()));

我的错误是:

String(171) "cURL error 6: Could not resolve host: 'https (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for http://'xxxxxx':'xxxxxx'@'https/%27ingredients_test%27/_search"

原因是它在解析.env文件时没有删除引号

相关问题