【发布时间】:2015-07-30 10:00:06
【问题描述】:
我是 elasticsearch 新手,但我正在尝试从 elasticsearch 文档实现基本的 java Get API。 https://www.elastic.co/guide/en/elasticsearch/client/java-api/1.x/get.html
我正在使用 TransportClient 连接到 elasticsearch。据我了解,TransportClient 使用端口 9300。Elasticsearch 在端口 9200 上。当我使用指定的集群、索引、类型和 ID 调用 get 请求时,我只返回一个空的字段列表。我已经使用 sense 插件在 elasticsearch 中创建了索引,并通过 head 插件对其进行了验证。但是,当我尝试通过我的 java 实现检索这些值时,我什么也得不到。下面是我的部分代码。
public String transportClientToElasticSearch()
{
Settings settings = ImmutableSettings.settingsBuilder()
.put("client.transport.sniff", "true")
.put("cluster.name", "elasticsearch").build();
Client client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("localhost", 9300));
//.addTransportAddress(new InetSocketTransportAddress("localhost", 9200));
client.admin().indices().prepareRefresh("index").execute();
GetResponse response = client.prepareGet("index", "type", "id")
.execute()
.actionGet();
String elasticResponse = response.getFields().toString();
return elasticResponse;
}
我最初的想法是,这是由于 TransportClient 和 ES 的端口号不同。有什么想法吗?谢谢你。
【问题讨论】:
-
您的端口很好,9200 是 HTTP 流量的默认端口,9300 是 TCP 流量的默认端口(即通过 TransportClient)。你能从你的 ES 服务器显示相关日志吗?
-
嗨@Val,谢谢你的回复。查看日志文件夹,只有 elasticsearch.log 已更新,并且仅在启动 elasticsearch.bat 时才更新。我似乎找不到任何与上述有关的日志语句或文件。
-
您是否尝试过检索
response.getSource(),这应该会生成您的文档字段的映射? -
太棒了!那行得通。 response.getSource() 返回指定 Id 的字段。这是我期望从 response.getFields() 返回的。
标签: java spring-mvc elasticsearch