Я хочу вставить объект, используя java клиент высокого уровня отдыха.
Мое сопоставление следующее:
"images":{
"type":"nested",
"properties":{
"name":{
"type":"text"
},
"url":{
"type":"text"
}
}
}
и java код:
// productDb.getImages () возвращает ArrayList типа Image: с атрибутами «name» и «url»
productToIndex.put("images", new Gson().toJson(productDb.getImages()));
IndexRequest indexRequest = new IndexRequest(ProductIndex.PRODUCT_INDEX, ProductIndex.TYPE)
.source(productToIndex, XContentType.JSON);
try {
restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
} catch (Exception e) {
logger.error("Data access error occured the entity persistence...", e);
throw new Exception(e);
}
Ошибка:
ElasticsearchStatusException [ Исключение Elasticsearch [type = mapper_parsing_exception, причина = сопоставление объекта для [images] пытался проанализировать поле [images] как объект, но нашел конкретное значение]]
Конкретное значение:
images -> [{"name":"Capture.PNG","url":"/api/trader/files/2132132/Capture.PNG"},{"name":"payement.jpg","url":"/api/trader/files/31231321/payement.jpg"}]
==> Мне кажется, что все в порядке, и я не могу понять, почему он возвращает исключение, если я заменяю productDb.getImages () на новый Arraylist <> (); он работает нормально (индексированное значение: "images": [])
Я не могу найти пример того, как индексировать объект массива, используя java, есть ли решение сделать это?
Спасибо.