php 弹性搜索给出错误在您的集群中找不到任何活动节点
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/42549586/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Elastic Search Give an error No alive nodes found in your cluster
提问by Tomas
I am start working with elastic search.I successfully install elastic search on my server(Different from application server).But When I try to call Elatic search from my Application server it gives an error
Fatal error: Uncaught exception 'Elasticsearch\Common\Exceptions\NoNodesAvailableException' with message 'No alive nodes found in your cluster'
我开始使用弹性搜索。我在我的服务器上成功安装了弹性搜索(不同于应用程序服务器)。但是当我尝试从我的应用程序服务器调用 Elatic 搜索时,它给出了一个错误
Fatal error: Uncaught exception 'Elasticsearch\Common\Exceptions\NoNodesAvailableException' with message 'No alive nodes found in your cluster'
When I check Elastic search status it shows Active.
当我检查 Elastic 搜索状态时,它显示Active。
How can I call elastic search from my Application server to my Elastic search server.
如何从我的应用程序服务器调用弹性搜索到我的弹性搜索服务器。
<?php
require 'vendor/autoload.php';
$hosts = [
'ip_address:9200' // IP + Port
];
$client = Elasticsearch\ClientBuilder::create()->setHosts($hosts)->build();
$params = [
'index' => 'my_index',
'type' => 'my_type',
'id' => 'my_id',
'body' => ['testField' => 'abc']
];
$response = $client->index($params);
?>
My elasticsearch.yml Settings
我的 elasticsearch.yml 设置
# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
# Before you set out to tweak and tune the configuration, make sure you
# understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please see the documentation for further information on configuration options:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html>
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-1
#
# Add custom attributes to the node:
#
# node.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
# path.data: /path/to/data
#
# Path to log files:
#
# path.logs: /path/to/logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
# bootstrap.memory_lock: true
#
# Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory
# available on the system and that the owner of the process is allowed to use this limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
#network.host: 0.0.0.0
#network.bind_host: 0
#
# Set a custom port for HTTP:
#
# http.port: 9200
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
# discovery.zen.ping.unicast.hosts: ["host1", "host2"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
#
# discovery.zen.minimum_master_nodes: 3
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html>
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
# gateway.recover_after_nodes: 3
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html>
#
# ---------------------------------- Various -----------------------------------
#
# Disable starting multiple nodes on a single system:
#
# node.max_local_storage_nodes: 1
#
# Require explicit names when deleting indices:
#
# action.destructive_requires_name: true
elasticsearch.yml settings which are not working
elasticsearch.yml 设置不起作用
network.host: 127.0.0.1
network.host: 127.0.0.1
network.host: 0
network.host: 0
network.host: 0.0.0.0
network.host: 0.0.0.0
network.host: IP_Address
network.host: IP_Address
network.bind_host: 0
network.bind_host: 0
network.bind_host: IP_Address
network.bind_host: IP_Address
When I set the above settings then elasticsearch shows the failed status.
当我设置上述设置时,elasticsearch 显示失败状态。
NOTE : Elastic search install on different server from my Application sever.
注意:弹性搜索安装在与我的应用程序服务器不同的服务器上。
采纳答案by Tomas
I found the error.Error is coming due to space before node.nameand cluster.name.Remove the space and its working fine.
我发现 error.Error 由于node.name和cluster.name之前的空间而出现。删除空间及其工作正常。
Updated elasticsearch.yml file
更新了 elasticsearch.yml 文件
# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
# Before you set out to tweak and tune the configuration, make sure you
# understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please see the documentation for further information on configuration options:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html>
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: my-application-shakedeal
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: shakedeal-1
#
# Add custom attributes to the node:
#
# node.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
# path.data: /path/to/data
#
# Path to log files:
#
# path.logs: /path/to/logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
# bootstrap.memory_lock: true
#
# Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory
# available on the system and that the owner of the process is allowed to use this limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 127.0.0.1
network.bind_host: IP_ADDRESS
#
# Set a custom port for HTTP:
#
# http.port: 9200
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
# discovery.zen.ping.unicast.hosts: ["host1", "host2"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
#
# discovery.zen.minimum_master_nodes: 3
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html>
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
# gateway.recover_after_nodes: 3
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html>
#
# ---------------------------------- Various -----------------------------------
#
# Disable starting multiple nodes on a single system:
#
# node.max_local_storage_nodes: 1
#
# Require explicit names when deleting indices:
#
# action.destructive_requires_name: true
PHP Code
PHP代码
<?php
require 'vendor/autoload.php';
$indexParams = [
'index' => 'my_index',
'body' => [
'settings' => [
'number_of_shards' => 5,
'number_of_replicas' => 1
]
]
];
$client = Elasticsearch\ClientBuilder::create()
->setSSLVerification(false)
->setHosts(["IP_ADDRESS:9200"])->build();
$response = '';
try {
/* Create the index */
$response = $client->indices()->create($indexParams);
print_r($response);
print_r($response);
} catch(Exception $e) {
echo "Exception : ".$e->getMessage();
}
die('End : Elastic Search');
?>
Success Response:
成功响应:
Array
(
[acknowledged] => 1
)
回答by Mohd Bashir
I have found this error and solved it by following steps:
我发现了这个错误并通过以下步骤解决了它:
Comments the plugin setting on app/etc/env.php file.
'system' => [ 'default' => [ /* 'smile_elasticsuite_core_base_settings' => [ 'es_client' => [ 'servers' => 'node-1:9200,node-2:9200', 'enable_https_mode' => '0', 'enable_http_auth' => '0', 'http_auth_user' => '', 'http_auth_pwd' => '' ] ] */ ] ]
Start the server.
upgrade magento
php bin/magento setup:upgrade
注释 app/etc/env.php 文件中的插件设置。
'system' => [ 'default' => [ /* 'smile_elasticsuite_core_base_settings' => [ 'es_client' => [ 'servers' => 'node-1:9200,node-2:9200', 'enable_https_mode' => '0', 'enable_http_auth' => '0', 'http_auth_user' => '', 'http_auth_pwd' => '' ] ] */ ] ]
启动服务器。
升级 magento
php bin/magento setup:upgrade
回答by Ashish Tiwari
I also facing the same problem. I was specified in host 'myhostaddress:9200'. Change it with IP of your Elasticsearch host server like '127.0.0.1:9200' . It resolve my problem.
我也面临同样的问题。我在主机“myhostaddress:9200”中被指定。使用您的 Elasticsearch 主机服务器的 IP 更改它,例如 '127.0.0.1:9200' 。它解决了我的问题。
回答by Prakhar Sharma
Your answer can be found at the link I am providing https://forums.aws.amazon.com/thread.jspa?threadID=230626I got the same problem but through this link it resolved, the answer which suggest attaching a suffix :443 at the end will work
您的答案可以在我提供的链接中找到https://forums.aws.amazon.com/thread.jspa?threadID=230626我遇到了同样的问题,但通过此链接解决了,建议附加后缀的答案: 443最后会起作用