在弹性搜索中使用_id作为文档标识符

时间:2016-10-22 09:06:30

标签: java json elasticsearch

我有一个带有_id作为参数的文档。我有以下JSON

{  
   "_id":{  
      "$oid":"52af48b5d55148fa0c199643"
   },
   "email":"example.ex@example.com"
}

对应的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。

请提供建议

2 个答案:

答案 0 :(得分:0)

与错误消息一样,您不能在文档中使用名称为_id的字段。

修复使用“替换所有”(或替换其他子字符串中的子串的函数)函数,并将所有“_id”出现替换为“id”

答案 1 :(得分:0)

只需使用以下

{  
     "_id":"52af48b5d55148fa0c199643",
      "email":"example.ex@example.com"
}

删除@ObjectId