#java #json #elasticsearch
#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 внутренне.
Пожалуйста, предоставьте предложения
Ответ №1:
Просто используйте следующим образом
{
"_id":"52af48b5d55148fa0c199643",
"email":"example.ex@example.com"
}
И удалите @ObjectId
Комментарии:
1. Привет, спасибо за ваш пост… Я не могу изменить формат json, поскольку он поступает из внешнего источника
Ответ №2:
Как и в сообщении об ошибке, вы не можете использовать поле с именем _id внутри документа.
Чтобы исправить это, используйте функцию «заменить все» (или подобную функцию, которая заменяет substring в другой substring) и замените все вхождения «_id» на «id»
Комментарии:
1. Не могли бы вы, пожалуйста, предложить какой-нибудь адаптер json для преобразования в этих случаях … я не могу изменить формат json, поскольку он поступает из внешнего источника