概述
ES无法直接更新数组的,需要转成Map
直接上代码
// ES无法更新对象数组,需要转成 Map
List<Map<String, Object>> result = Lists.newArrayList();
Map<String, Object> map = Maps.newHashMap();
Class<?> clazz;
// 使用反射动态将Set中的属性值放入Map中
for (Object obj : collect) {
clazz = obj.getClass();
// 遍历当前对象的属性值
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String name = field.getName();
Object value = null;
try {
value = field.get(obj);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
map.put(name, value);
}
result.add(map);
map = Maps.newHashMap();
}
map.put("brandName", result);
```
// 最后直接更新就行
UpdateRequest updateRequest = new UpdateRequest(indexValue, String.valueOf(id)).doc(updateMap).upsert(map);
最后
以上就是善良花卷为你收集整理的【ES更新嵌套数组】的全部内容,希望文章能够帮你解决【ES更新嵌套数组】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复