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

安装完运行,创建一个文档



require 'vendor/autoload.php';

use Elasticsearch\ClientBuilder;

$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 的目录结构如下:

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

 

 

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

http.cors.enabled: true

http.cors.allow-origin: “*”

此步为允许elasticsearch跨越访问,如果不安装后面的elasticsearch-head是可以不修改,直接启动。

3. 启动ES服务

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

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

 

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

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

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

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

 

 接下来就可以做一系列操作了