elasticsearch 2.3.4를 실행 중이지만 구문이 5.x에서 변경되지 않은 것 같습니다.Elasticsearch Multi 곱슬 곱슬 함으로 작업 할 수 있지만 Java API를 통해 결과가 반환되지 않습니다.
Multiget over curl 잘 작동합니다.
이curl 'localhost:9200/_mget' -d '{
"docs" : [
{
"_index" : "logs-2017-04-30",
"_id" : "e72927c2-751c-4b33-86de-44a494abf78f",
"fields" : ["message"]
}
]
}'
위의 쿼리의 두 로그를 반환 :
curl 'localhost:9200/_mget' -d '{
"docs" : [
{
"_index" : "logs-2017-04-30",
"_id" : "e72927c2-751c-4b33-86de-44a494abf78f"
}
]
}'
그리고는 "메시지"를 끌어 할 때 응답을 필드 오프, 나는이 요청을 사용 : 여기 내 컬의 모습입니다 그리고 내가 찾고있는 정보. 나는이 같은 자바로 번역 할 때
는하지만 :
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));
}
는 내가 다시 널 (null) 오브젝트를 받고있는 것으로 나타납니다. ---
GetField field = response.getField("message");
< null를 돌려 내가 잘못 뭐하는 거지
: 내가 널보고하는 GetResponse 객체 오프 메시지 필드를 잡아하려고하면 아무것도 없다? elasticsearch에 대한 나머지 호출을 수행하면 로그가 존재 함을 증명하지만 Java 호출은 어떻게 든 잘못됩니다.
가 null ("로그-2017년 4월 30일을"request.add, "e72927c2-751c-4b33-86de -44a494abf78f ")'? 타입이나'_all'을 제공해야합니다! – avr
@avr API는 null을 허용합니다. 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