Я использую Solr6.2 и хочу обновить определенное поле в документе, как это в реляционном db: update table_a set field_x = filed_x + 1;Обновить специальное поле в Solr
Как добиться этого в Solr? Спасибо заранее.
Я использую Solr6.2 и хочу обновить определенное поле в документе, как это в реляционном db: update table_a set field_x = filed_x + 1;Обновить специальное поле в Solr
Как добиться этого в Solr? Спасибо заранее.
Для этого вам нужно будет установить все поля как сохраненные, так как вы можете использовать поддержку Solr для Updating Parts of Documents.
Вы можете использовать команду inc
для увеличения поля в документе:
{
"id":"mydoc",
"popularity":{"inc":20}
}
Поскольку внутренне обновление является «получить документ, изменить значение, переиндексации документ», все поля должны быть установлены как хранить , Если вы используете схему schemaless по умолчанию .. в 6.2, все поля сохраняются по умолчанию. Если вы используете настраиваемую схему или вручную изменили поля через API-интерфейс Schema, вам нужно убедиться, что все они настроены как сохраненные.
Update:
Для SolrJ, что-то, как это должно работать (from Yonik's post):
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "test");
Map<String, String> cmd2 = new HashMap<>();
cmd1.put("inc", "20");
doc.addField("field1", cmd1);
client.add(collection, doc);
Действительно спасибо за ваш ответ, я могу что-то упустить. Я хочу использовать SolrJ и не знаю, какой класс/метод может достичь такого же результата. –