2016-10-22 73 views
0

我有一个以_id作为参数的文档。我有以下JSON在弹性搜索中使用_id作为文档标识符

{ 
    "_id":{ 
     "$oid":"52af48b5d55148fa0c199643" 
    }, 
    "email":"[email protected]" 
} 

相应的Java类:

@Document(indexName = "Test") 
public class Test { 

    @Id 
    @ObjectId 
    private String _id; 

    private String email; 
} 

JSON对象的转换成功但在将数据保存到弹性搜索的问题。

org.elasticsearch.index.mapper.MapperParsingException: Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters 

我已经看到了一些参考,来到我不能使用_id下结论。但要寻找一种方式来使用JsonProperty,但它也为我猜的ObjectId使用JsonProperty内部不起作用。

请提供建议

回答

0

像错误消息说,您不能使用字段里面的文件名_id。

为了解决这个问题使用“全部替换”(或功能类似用于替换在其他的子字符串)功能,并更换为“ID”所有“_id”发生

+0

你可以请建议一些JSON适配器转换在这些情况下...我不能改变JSON格式,因为它来自外部来源 – Dev

0

如下

{ 
    "_id":"52af48b5d55148fa0c199643", 
     "email":"[email protected]" 
} 
只需使用

并删除@ObjectId

+0

嗨感谢您的帖子...我无法改变json格式,因为它来自外部来源 – Dev