Ответ «да» с ScriptTransformer, я обнаружил через пробную версию и ошибку.
В документации Solr показано, как добавить атрибут обновления в полевой узел с помощью «set», «add» или «inc». Если я создаю тестовый XML-файл с необходимым атрибутом обновления, он отлично работает при передаче в обычный обработчик обновления. Но при передаче DIH - даже без какого-либо преобразования - атрибуты обновления полностью игнорируются.
Вот упрощенная версия трансформатора сценария, который я использовал для повторного введения атрибута обновления и получения атомных обновлений. Обратите внимание на использование Java HashMap.
var atomicTransformer = function (row) {
var authorMap = new java.util.HashMap();
var author = String(row.get('author'));
authorMap.put('add', author);
row.put('author', authorMap);
};
Это приводит следующий JSON в DIH режим отладки:
{
"id": [
123
],
"author": [
{
"add": "Smith, J"
}
]
}
Многозначные поля также нет проблем проходят в ArrayList в HashMap вместо строки.
var atomicTransformer = function (row) {
var fruits = new java.util.ArrayList();
fruits.add("banana");
fruits.add("apple");
fruits.add("pear");
var fruitMap = new java.util.HashMap();
fruitMap.put('add', fruits);
row.put('fruit', fruitMap);
}