我正在运行elasticsearch 2.3.4,但在5.x中语法似乎没有改变。Elasticsearch Multi通过curl获得工作,但没有结果通过Java API返回
Multiget over curl工作得很好。这里是我的卷发看起来像:
curl 'localhost:9200/_mget' -d '{
"docs" : [
{
"_index" : "logs-2017-04-30",
"_id" : "e72927c2-751c-4b33-86de-44a494abf78f"
}
]
}'
而当我想拉“Message”字段中关闭该响应,我用这个请求:
curl 'localhost:9200/_mget' -d '{
"docs" : [
{
"_index" : "logs-2017-04-30",
"_id" : "e72927c2-751c-4b33-86de-44a494abf78f",
"fields" : ["message"]
}
]
}'
以上两种查询返回的日志和我正在寻找的信息。
但是,当我试图像这样转换为Java:
MultiGetRequestBuilder request = client.prepareMultiGet();
request.add("logs-2017-04-30", null, "e72927c2-751c-4b33-86de-44a494abf78f");
MultiGetResponse mGetResponse = request.get();
for (MultiGetItemResponse itemResponse : mGetResponse.getResponses()) {
GetResponse response = itemResponse.getResponse();
logger.debug("Outputing object: " + ToStringBuilder.reflectionToString(response));
}
我似乎越来越空的对象回来。当我试图抓住信息栏关闭空找对象的GetResponse,无所不有:
GetField field = response.getField("message");
< ---返回null
我在做什么错?对elasticsearch进行休息调用证明日志存在,但是我的Java调用在某种程度上是错误的。
为什么要给'type'为'null'在行'你的java请求request.add( “日志 - 2017年4月30日”,NULL,“e72927c2-751c-4b33-86de -44a494abf78f“)'?你应该提供类型或'_all'! – avr
@avr API确实允许它为空,https://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/action/get/MultiGetRequestBuilder.java#L47,但我回去并将类型添加到curl命令和Java MultiGetRequestBuilder.add命令中,并看到相同的行为。它在curl调用上工作并在Java调用中失败。 – Shadoninja