elasticsearch,Java,Json,elasticsearch" /> elasticsearch,Java,Json,elasticsearch" />

Java 如何将json数组写入elasticsearch';es rest客户端的s objetct字段?

Java 如何将json数组写入elasticsearch';es rest客户端的s objetct字段?,java,json,elasticsearch,Java,Json,elasticsearch,我使用elasticsearch6.8和jdk8。关键问题是如何将json数组字符串写入elasticsearch的对象类型字段。下面的代码显示了我是如何尝试编写es的 我的映射如下: { "mapping": { "_doc": { "properties": { "c_json": { "type": "object&quo

我使用elasticsearch6.8和jdk8。关键问题是如何将json数组字符串写入elasticsearch的对象类型字段。下面的代码显示了我是如何尝试编写es的

我的映射如下:

{
  "mapping": {
    "_doc": {
      "properties": {
        "c_json": {
          "type": "object"
        }
      }
    }
  }
}
我的c_json值是:

{
  "key1": "val1",
  "key2": "val2",
  "key3": "val3"
}
我的java代码是:

stringjson=”{
“key1”:“val1”,
“键2”:“val2”,
“键3”:“val3”
}";
String keyName=“c_json”;
Map myDataMap=newhashmap();
put(keyName,json);
IndexRequest IndexRequest=新IndexRequest(“我的索引”).id(esIdValue)
.type(“\u doc”)
.source(XContentType.JSON,convertMapToEsValues(myDataMap));
BulkRequest BulkRequest=新的BulkRequest();
BulkResponse BulkResponse=es6Client.bulk(bulkRequest,RequestOptions.DEFAULT);

公共静态对象[]convertMapToEsValues(映射值映射){
List kvList=Lists.newArrayList();
for(字符串字段名:valueMap.keySet()){
kvList.add(字段名);
kvList.add(valueMap.get(fieldName));
}
返回kvList.toArray();
}
当我运行代码时,es server会给我一个异常:

  ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=object mapping for [c_json] tried to parse field [c_json] as object, but found a concrete value]],action id is 9, Index name is my_index
我检查kibana中的索引文档数据,发现c_json包含以下值。此illgal值是否导致异常


此错误意味着您在索引中已经为文档编制了索引,其中
c_json
不是对象,只是单个字段,如
c_json=value
。您需要查找并删除这些文档或删除整个索引。@leandrojmp我已指定该字段为对象类型。为什么设置不起作用?什么是索引文档?这似乎不是一个json对象,而是一个带有一些值的数组。阵列在Kibana中没有得到很好的支持。