我正在尝试更新Elasticsearch中的对象,但出现下一条错误消息:
Elasticsearch异常[type = mapper_parsing_exception,原因=对象 [errorMessages]的映射尝试将字段[errorMessages]解析为 对象,但找到了具体值]
This is my mappings:
{
.hierarchies: {
mappings: {
hierarchy: {
dynamic: "strict",
_all: {
enabled: false
},
properties: {
errorFlag: {
type: "keyword"
},
errorMessages: {
properties: {
isFavourite: {
type: "text"
},
message: {
type: "text"
}
}
},
}
}
}
我要更新的信息是这样的:
"errorMessages" -> "{"isFavourite":"yes","message":"hola"}"
我使用其余的客户端连接器和对象UpdateRequest:
UpdateRequest updateRequest = new UpdateRequest(
collection,
type,
id);
updateRequest.doc(document);
updateRequest.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);
try {
return esConnector.getRestClient().update(
updateRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
throw new ElasticsearchGenericException("Error updating document " + collection + " > " + type + " id: " + id + " (Reason: " + e.getMessage() + ")");
}
}
文档的值是带有errorMessages的json。 这是UpdateRequest对象:
更新{[.hierarchies] [hierarchy] [ZEqi1GkByxIcUBtfsLRV], doc_as_upsert [false],doc [index {[null] [null] [null], source [{“ errorMessages”:“ {\” isFavourite \“:\”是\“,\”消息\“:\” hola \“}”}]}}]], scripted_upsert [false],detect_noop [true]}
对这个问题有任何想法吗?
答案 0 :(得分:0)
errorMessages
应该用下面的对象数组而不是字符串值表示:
{
"errorMessages": [
{
"isFavourite": "yes",
"message": "hola"
}
]
}