Java 如何将json数组写入elasticsearch';es rest客户端的s objetct字段?
我使用elasticsearch6.8和jdk8。关键问题是如何将json数组字符串写入elasticsearch的对象类型字段。下面的代码显示了我是如何尝试编写es的 我的映射如下: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
{
"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中没有得到很好的支持。