如何解决使用 Java 高级 Rest 客户端将对象添加到 Elastic Search 索引中的数组
我正在尝试将列表或单个对象添加到弹性搜索索引上的数组字段,索引如下所示:
"_index" : "class_index","_id" : "1234","_source" : {
"externalId" : 1234,"description" : "10th grade","users" : [
{
"name" : useer 1,"age" : "16","active" : 1
},{
"name" : user 2,"age" : "15","adtive" : 1
}
]
}
我正在使用 Java 高级 Rest 客户端通过将对象转换为 JsonNode 来将单个对象添加到数组字段。我的问题是两部分,是否可以传递用户对象数组而不是单个对象?此外,我在使用此方法时遇到了如下所示的问题。
//usere here is a java object
Map<String,Object> paramMap = new HashMap<>();
ObjectMapper mapper = new ObjectMapper();
//user object: {"name":user name,"agee":"25","active":0}
JsonNode node = mapper.convertValue(userList.getUsers().get(0),JsonNode.class);
Map<String,Object> jsonMap = mapper.convertValue(node,Map.class);
final UpdateRequest indexRequest = new UpdateRequest(INDEX,TYPE,_id);
Script inline = new Script(ScriptType.INLINE,"painless","ctx._source.characters += params.user)",singletonMap("user",jsonMap));
indexRequest.script(inline);
restClient.update(indexRequest,RequestOptions.DEFAULT);
我不确定我是否在这里遗漏了一些东西,但我仍然在尝试使用单个对象更新字段时遇到以下异常:
caused by: org.elasticsearch.ElasticsearchException: Elasticsearch exception [type=illegal_argument_exception,reason=unexpected token [')'] was expecting one of [{<EOF>,';'}].]
at org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:509) ~[elasticsearch-6.8.10.jar:6.8.10]
at org.elasticsearch.ElasticsearchException.fromXContent(ElasticsearchException.java:420) ~[elasticsearch-6.8.10.jar:6.8.10]
at org.elasticsearch.ElasticsearchException.innerFromXContent(ElasticsearchException.java:450) ~[elasticsearch-6.8.10.jar:6.8.10]
我们可以在不使用脚本的情况下实现目标吗?
感谢您对此的任何帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。