Обновить поле внутри вложенного типа в asticsearch из Java
Найдите приведенное ниже сопоставление. Мы пытаемся обновить поле доменов внутри типа доменов.
"mappings":{
"candidate":{
"_all":{
"enabled":false
},
"properties":{
"domains":{
"properties":{
"country":{
"type":"short",
"include_in_all":false
},
"domains":{
"type":"string",
"copy_to":[
"domain_exact",
"domain_partial"
]
}
}
}
}
}
}
И код Java, приведенный ниже,
esMgr.updateIndex(indexName, "candidate", domainDetails[2]).setDoc("domains.domains", domainDetails[1])
.get();
Мы получаем следующее исключение,
Caused by: MapperParsingException[Field name [domains.domains] cannot contain '.']
Может кто-нибудь помочь нам, как исправить эту проблему в Java.
1 ответ
Чтобы обновить, вы можете попробовать:
UpdateRequestBuilder br = client.prepareUpdate(indexName, "candidate", domainDetails[2]);
br.setDoc("{\"domains\":{ \"domains\": " + domainDetails[1] + "}}".getBytes());
br.execute();