public static void main(String[] args) throws IOException {
Settings settings = ImmutableSettings.settingsBuilder()
.put("cluster.name", "foxzen")
.put("node.name", "yu").build();
Client client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("XXX.XXX.XXX.XXX", 9200));
// XXX is my server's ip address
IndexResponse response = client.prepareIndex("twitter", "tweet")
.setSource(XContentFactory.jsonBuilder()
.startObject()
.field("productId", "1")
.field("productName", "XXX").endObject()).execute().actionGet();
System.out.println(response.getIndex());
System.out.println(response.getType());
System.out.println(response.getVersion());
client.close();
}
我从计算机访问服务器
curl -get http://XXX.XXX.XXX.XXX:9200/
得到这个
{
"status" : 200,
"name" : "yu",
"version" : {
"number" : "1.1.0",
"build_hash" : "2181e113dea80b4a9e31e58e9686658a2d46e363",
"build_timestamp" : "2014-03-25T15:59:51Z",
"build_snapshot" : false,
"lucene_version" : "4.7"
},
"tagline" : "You Know, for Search"
}
为什么使用Java API会出错?
编辑
有集群和节点部分的配置 elasticsearch.yml
################################### Cluster ###################################
# Cluster name identifies your cluster for auto-discovery. If you're running
# multiple clusters on the same network, make sure you're using unique names.
#
cluster.name: foxzen
#################################### Node #####################################
# Node names are generated dynamically on startup, so you're relieved
# from configuring them manually. You can tie this node to a specific name:
#
node.name: yu
一些建议:
1-使用端口9300。[9300-9400]用于节点到节点通信,[9200-9300]用于HTTP通信。
2-确保您使用的Java API的版本与服务器上运行的elasticsearch的版本匹配。
3-确保集群名称为foxzen
(检查服务器上的elasticsearch.yml)。
4-删除put("node.name", "yu")
,因为您正在使用TransportClient
,yu
所以您不会作为节点加入群集,即使您看起来像是服务器节点也已命名,因此无论如何都希望使用其他节点名称。
问题内容: 我正在尝试从Java Web Service中的Elastic Search中进行搜索,这是我现在使用的方式: 第一行可以正常工作,但是转到第二行时,将发生以下异常: NoNodeAvailableException [没有已配置的节点可用:[{#transport#-1} {TskPSVeBRR6CvCzP9EVhkQ} {192.168.10.150} {192.168.10.15
问题内容: 我正在上它可为本地 我正在使用Elastic4s进行连接,尝试了以下方法,但是所有这些都给了我错误 和 错误是 我完整的代码是 问题答案: 9200是用于通过HTTP连接的端口,这就是为什么它可以在您的浏览器中工作的原因。如果检查堆栈跟踪的顶部,则可以看到通过传输客户端(即TCP)进行连接,因此需要使用端口9300。试试这个:
没有可用的工作节点。我们在postgres中断断续续地得到这个错误。我已经确保.properties文件在所有节点中都是可用的,并且是正确的,因此一些查询正在运行。
问题内容: 过去一个小时刚刚下载并安装了elasticsearch 1.3.2 打开到端口9200和9300:9400的IP表 在/ etc / hosts中设置我的计算机名称和IP 头模块和护理人员已安装且运行平稳 卷曲在本地主机上工作完美 将所有jar从下载中复制到eclipse中,因此版本相同 --Java– -输出- 更新:现在我真的很困惑。我只是按了日食3次。2次收到上述错误。1次搜索成
嗨,朋友们,我正在用开发spring boot项目,我已经在本地机器上安装了弹性搜索,我已经在弹性搜索中安装了插件。我的弹性搜索设置正确,显示绿色标志。项目中的application-dev.yml文件如下: 弹性搜索服务正在我的机器上运行,但当我试图首先保存实体时,我的代码将实体保存在mysql中,然后使用在弹性搜索中,但将实体保存到Elastic中时,它会引发错误: 我也使用了端口而不是,但是
问题内容: 我知道这个问题已经得到解决,但是我已经尽力了,无法解决我的问题。 我刚刚安装了elasticsearch并启动了它。这里的弹性日志: 因此,Elastic已在端口9300上完全运行并正在侦听。 我的群集名称是“我的应用程序”。 由elasticsearch.yml确认: 并且通过请求http:// localhost:9200 /来确认: 这是我的Maven依赖关系(elastic和c