php运行elasticSearch出现NoNodeAvailableException原因与解决方案

第一次在本地运行elasticSearch,环境是php,所以直接按照文档安装elasticsearch-php   https://www.elastic.co/guide/cn/elasticsearch/php/current/_quickstart.html

安装完运行,根据文档示例创建一个es文档


require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$client = ClientBuilder::create()->build(); //默认连接的话是127.0.0.1:9300
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id',
    'body' => ['testField' => 'abc']
];

$response = $client->index($params);
print_r($response);

直接报错:nonodesavailableexception 运行不起来

最后发现,原来是没有开启elasticSearch服务 

解决方案:

1.再次下载elasticSearch

ElasticSearch的官方地址: https://www.elastic.co/products/elasticsearch
学习用,下载windows版本就行,上线的时候有运维人员安装给我们使用。

 2.安装

ES服务 Window版的ElasticSearch的安装很简单,类似Window版的Tomcat,解压开即安装完毕,解压后的ElasticSearch 的目录结构如下:

修改elasticsearch配置文件:config/elasticsearch.yml,增加以下两句命令:

http.cors.enabled: true
http.cors.allow-origin: "*"

此步为允许elasticsearch跨越访问,如果不安装后面的elasticsearch-head是可以不修改,直接启动。(后面的可视化es如果使用的话,需要修改此处)

3. 启动ES服务

点击ElasticSearch下的bin目录下的elasticsearch.bat启动,控制台显示的日志信息如下:

 注意:9300是tcp通讯端口,集群间和TCPClient都执行该端口,9200是http协议的RESTful接口 。 通过浏览器访问ElasticSearch服务器,看到如下返回的json信息,代表服务启动成功:

到这里说明服务启动了,再次去运行我们的创建文档代码,发现不报错了

 到这里你的es搜索就可以使用了,接下来就可以做一系列操作了

 es可视化安装

下面是安装可视化界面

这个es 可视化 需要基于Node 环境 ,所以说,想要可视化的话,要确保系统是否具备Node 环境

 

 打开cmd,进入我们上面安装的目录elasticsearch-head-master下

输入命令安装:npm install --registry=https://registry.npm.taobao.org

安装后 ,执行可视化启动命令: npm run start

 浏览器 输入 localhost:9100查看

 点击连接,如果连接不上,卡看是否跨域,因为是9100访问 9200 浏览器保护策略 端口不一致 导致跨域了

 es 配置文件中 添加 跨域 即 config 目录下的 elasticsearch.yml 文件

 再次查看

 可视化安装成功

原文地址:https://www.cnblogs.com/bkhdd/p/15223758.html