微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Java 高级 Rest 客户端将对象添加到 Elastic Search 索引中的数组

如何解决使用 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 举报,一经查实,本站将立刻删除。