我正在尝试从Java Web Service中的Elastic Search中进行搜索,这是我现在使用的方式:
Client client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("192.168.10.150"), 9200)); SearchResponse searchResponse = client.prepareSearch().execute().actionGet();
第一行可以正常工作,但是转到第二行时,将发生以下异常:
NoNodeAvailableException [没有已配置的节点可用:[{#transport#-1} {TskPSVeBRR6CvCzP9EVhkQ} {192.168.10.150} {192.168.10.150:9200}]]
无论我使用 9200 还是 9300 设置 端口 ,结果都是一样的。
另外,我尝试使用 NEST* 从 .Net 程序中搜索,并且运行正常。这是我尝试的方法: *
var node = new Uri("http://192.168.10.150:9200"); var settings = new ConnectionSettings(node).DefaultIndex("iod-2017.03.08.*"); _EsClient = new ElasticClient(settings); var index = String.Format("iod-{0}.{1:00}.{2:00}.*", item.TriggerTime.Year, item.TriggerTime.Month, item.TriggerTime.Day); var uniqueId = item.UniqueId.ToString(); var result = _EsClient.Search<logs>(s => s.Index(index).Query(q => q.Match(t => t.Field(l => l.id).Query(uniqueId))));
我的Java程序是否做错了什么( 防火墙 ,库的 版本 ,调用API的 方法 等)?我当前的 Java 版本是 1.8.0.121 , Elastic Search 和 Transport Client 的版本都是 5.2 。谢谢!
如评论中所述,
如果您使用的不是elasticsearch集群名称,则需要在设置中更新该名称。
Settings settings = Settings.builder() .put("cluster.name", "myClusterName").build();