以下是我的索引或更新文档代码的一部分。我想得到'_source'中的特定字段值'documentID'。这里'json'是文档模型的JSONObject。
String jsonForUpdate = json.toString();
String uuid = UUID.randomUUID().toString();
json.put("documentID", uuid);
String jsonForIndex = json.toString();
IndexRequest indexRequest = new IndexRequest(indexName, typeName, documentModel.getId());
indexRequest.source(jsonForIndex);
UpdateResponse updateResponse = elasticsearchTemplate.getClient().prepareUpdate(indexName, typeName , documentModel.getId()).setDoc(jsonForUpdate).setUpsert(indexRequest).setFields("documentID").get();
我尝试使用此代码获取文档字段的值。
updateResponse.getGetResult().getFields().get("documentID").getValue().toString();
但是在更新文档时它对我没有用。在索引文档时工作正常。
答案 0 :(得分:1)
如果你看一下:https://techpunch.co.uk/development/create-custom-doctrine2-hydrator-symfony2
您可以看到可在更新时传递的以下参数:
_source
Allows to control if and how the updated source should be returned in the response. By default the updated source is not returned. See source filtering for details.
这意味着您prepareUpdate
可以使用setFetchSource(true)
方法,但这会带来完整的文档。
<强>更新强> 对于2.3.3版,您仍然可以使用:
/**
* Explicitly specify the fields that will be returned. By default, nothing is returned.
*/
public UpdateRequestBuilder setFields(String... fields) {
request.fields(fields);
return this;
}
Elasticsearch doc:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-update.html
该方法在UpdateRequestBuilder上可用,它是prepareUpdate返回的对象的类。