Elasticsearch使用java读取数据报错NoNodeAvailableException: None of the configured nodes are available: [127.0.0.1:9300]

对于这个问题,大部分人出现在这个地方:

Client client = new TransportClient(settings).addTransportAddress(new InetSocketTransportAddress("172.16.2.13", 9300));?

问题在于前面初始化settings时给cluster设置了个新的名字,如:Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "tonsonmiao").build();

因为如果设置clustername后,容器会在添加transportaddress时,从集群名为tonsonmiao里查找是否有要设置的这个IP和端口,此时肯定找不到,所以会报这个错。

但是我今天又遇到这个问题,而在此之前一切正常,也就是说并不会因为代码的错误导致这个问题出现,这几天修改了下网关,可以访问这台服务器,于是我觉得可能是网络的变动,导致es出了问题,进入服务器查看:

[[email protected] elasticsearch-1.4.2]# ps -eaf | grep java
root      8782  8752  0 05:53 pts/1    00:00:00 grep java
root     27251     1  1  2015 ?        1-10:15:49 /usr/bin/java -Xms256m -Xmx1g -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Delasticsearch -Des.path.home=/opt/elasticsearch-1.4.2 -cp :/opt/elasticsearch-1.4.2/lib/elasticsearch-1.4.2.jar:/opt/elasticsearch-1.4.2/lib/*:/opt/elasticsearch-1.4.2/lib/sigar/* org.elasticsearch.bootstrap.Elasticsearch

[[email protected] elasticsearch-1.4.2]# netstat -anp | grep 9300
tcp        0      0 10.18.7.97:9300             10.17.3.96:51633            SYN_RECV    -
tcp        0      0 10.18.7.97:9300             10.17.3.96:51635            SYN_RECV    -
tcp        0      0 :::9300                     :::*                        LISTEN      27251/java
tcp        0      0 ::ffff:10.18.7.97:41035     ::ffff:10.18.7.97:9300      ESTABLISHED 27251/java
tcp        0      0 ::ffff:10.18.7.97:9300      ::ffff:10.18.7.97:41030     ESTABLISHED 27251/java
tcp        0      0 ::ffff:10.18.7.97:41033     ::ffff:10.18.7.97:9300      ESTABLISHED 27251/java
tcp        0      0 ::ffff:10.18.7.97:41037     ::ffff:10.18.7.97:9300      ESTABLISHED 27251/java
tcp        0      0 ::ffff:10.18.7.97:41036     ::ffff:10.18.7.97:9300      ESTABLISHED 27251/java
tcp        0      0 ::ffff:10.18.7.97:41026     ::ffff:10.18.7.97:9300      ESTABLISHED 27251/java
tcp        0      0 ::ffff:10.18.7.97:9300      ::ffff:10.18.7.97:41025     ESTABLISHED 27251/java

 

可以看到es监听的ip地址发生了变化,对于多网卡的情况下,es默认会绑定其中任意一张网卡,如果es中间出现问题自动修复,那么会随机修改绑定网卡,导致节点被t出集群,曾经我在某银行系统,就遇到这个问题,某几个节点不定时的被t出集群。

对于这个问题的解决,需要修改es配置:

# Set the bind address specifically (IPv4 or IPv6):
#
network.bind_host: 10.18.7.97

# Set the address other nodes will use to communicate with this node. If not
# set, it is automatically derived. It must point to an actual IP address.
#
network.publish_host: 10.18.7.97

# Set both ‘bind_host‘ and ‘publish_host‘:
#
network.host: 10.18.7.97

强制指明ip地址即可

时间: 2024-10-23 13:08:11

Elasticsearch使用java读取数据报错NoNodeAvailableException: None of the configured nodes are available: [127.0.0.1:9300]的相关文章

解决ES报错NoNodeAvailableException[None of the configured nodes are available:问题

elasticSearch的错误 NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{-kTJsUqFSb69yMQ5v1fcuw}{192.168.56.101}{192.168.56.101:9300}] 找到服务器端口 找到安装目录下的  elasticsearch.yml配置文件 找到 这一行  cluster.name: 修改成自己search的与配置文件中的clus

ElasticSearch java客户端更新时出现的错误:NoNodeAvailableException[None of the configured nodes are available

下午尝试 用ElasticSearch  的java客户端去做数据检索工作,测试了一下批量更新,代码如下: public static void bulkUpdateGoods(List<Goods> goods) throws IOException, InterruptedException, ExecutionException { Client client = null; try { client = TransportClient.builder().build() .addTra

关于SimpleCursorAdapter在sqlite数据库中取数据报错 : java.lang.IllegalArgumentException: column &#39;_id&#39; does not exist

_id列不存在 需要创建一个 id列 因为SQLlite数据库 的onCreate方法是在数据库不存在的时候才调用所以我们需要清除一下这个app 的数据 将数据清空 关于SimpleCursorAdapter在sqlite数据库中取数据报错 : java.lang.IllegalArgumentException: column '_id' does not exist

java读取文件的基本操作

import java.io.FileInputStream; /** * 使用FileInputStream读取文件 */ public class FileRead { /** * @param args */ public static void main(String[] args) { // 读取文件操作 // 1.通过 fis.read()方法读取,一个字节一个字节读取,对数据进行循环遍历 // ReadFileToint(); // 2.通过fis.read(data,0,leng

java读取properties配置文件

java读取.properties配置文件 这两天做java项目,用到属性文件,到网上查资料,好半天也没有找到一个满意的方法能让我读取到.properties文件中属性值,很是郁闷,网上讲的获取属性值大概有以下方法,以下三种方法逐渐优化,以达到最好的效果以下都以date.properties文件为例,该文件放在src目录下,文件内容为 startdate=2011-02-07 totalweek=25 方法一: public class Stweek { static private Strin

Java 读取excel文件 兼容97-2013 V2.0

注释里有struts的上传文件和Springmvc有些不一样.读写都是一样的 修复删除缓存文件占用的问题 package com.telling.cw.util.poi; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.xssf.us

java读取本地txt文件并插入数据库

package com.cniia.ny.web.control.configManage; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; im

使用JSON数据报错和方法

 今天自己写了一个JSON的例子,可以一调用就出了问题,报下面这个异常: Java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException 上网上搜了一下才知道原来在使用JSON的使用的时候,不光要导入JSON这个包,同时还要导入另外三个包 总之,共需要下面的 jars,json-lib方可使用: commons-beanutils-1.7.0.jar commons-lang

Java读取数据库数据生成柱状图

此案例是用swing显示数据的.需要引入jfreechart相关包,不同版本可能包不相同,本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class BarChart { ChartPanel frame1; public BarChart() { CategoryDataset dataset = getDataSet(); JFreeChart chart = ChartFactory.createBarChart3D("水果",