我正在運行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