ElasticSearch с API Java - отображение сложного класса из класса или существующего объекта - PullRequest
0 голосов
/ 21 января 2019

Мой класс - «Транзакция», сложен множеством вложенных объектов. Есть способ определить отображение прямо из класса или существующего объекта?

примечание: я использую API остальных с клиентом высокого уровня. если есть решение только для низкоуровневого клиента, тоже хорошо.

Спасибо

1 Ответ

0 голосов
/ 30 января 2019

Вероятно, нет способа определить отображение прямо из класса или существующего объекта. Что я сделал, так это преобразовал каждый объект в строку JSON и сохранил ее как одно поле строки.

код:

// Using jackson
ObjectMapper mapper = new ObjectMapper();
String transactionAsJson = mapper.writeValueAsString(transaction); 
clientService.insertObjectToDb(transactionData.getHash(), transactionAsJson, 
             TRANSACTION_INDEX_NAME,  TRANSACTION_OBJECT_NAME );

public String insertObjectToDb(Hash hash, String objectAsJsonString, String index, String objectName) throws IOException {
        IndexResponse indexResponse = null;
        try {
            IndexRequest request = new IndexRequest(
                    index,
                    INDEX_TYPE,
                    hash.toString());
            request.source((jsonBuilder()
                    .startObject()
                    .field(objectName, objectAsJsonString)
                    .endObject()));
            indexResponse = restClient.index(request, RequestOptions.DEFAULT);
        } catch (Exception e) {
            log.error(e.getMessage());
        } finally {
            return indexResponse.toString();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...