Ошибка сервера: отсутствует обязательное полеJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка сервера: отсутствует обязательное поле

Сообщение Anonymous »

Мы перешли на solr 9.6.1, и поскольку они не поддерживают автоматический импорт данных из базы данных, мне пришлось сделать это в Java Spring. После определения класса импорта:

Код: Выделить всё

@Override
public void importData() {
List data = getLegeData();
for (Map record : data) {
SolrInputDocument solrDoc = new SolrInputDocument();

// Add main record fields
for (Map.Entry entry : record.entrySet()) {
solrDoc.addField(entry.getKey(), entry.getValue());
}

// Add nested entities
addNestedEntities(solrDoc, record.get("Id"));

// Log the Solr document before adding it to Solr
System.out.println("Solr document before add: " + solrDoc);

try {
solrClient.add(solrDoc);
System.out.println("Added document to Solr: " + solrDoc);
} catch (Exception e) {
System.out.println("Error during Solr add: " + e.getMessage());
e.printStackTrace();
}
break;
}

try {
UpdateResponse response = solrClient.commit();
System.out.println("Solr commit response: " + response);
} catch (SolrServerException | IOException e) {
System.out.println("Error during Solr commit: " + e.getMessage());
throw new RuntimeException(e);
}
}
Я попробовал протестировать его на сервере solr и получил ошибку:

Код: Выделить всё

Error during Solr add: Error from server at http://192.168.3.106:8983/solr/intra9/update: [doc=null] missing required field: info_aprox
org.apache.solr.client.solrj.impl.BaseHttpSolrClient$RemoteSolrException: Error from server at http://192.168.3.106:8983/solr/intra9/update: [doc=null] missing required field: info_aprox
Ошибка возникает при попытке добавить solrDoc в solrclient и зафиксировать изменения, поскольку в моем управляемом-schema.xml я определяю поле info_aprox, например, следующим образом: также определяя его как copyField под предыдущим объявлением: предложенная соответствующая запись не помогла или не относилась ко мне, но я мог что-то пропустить.
Я попробовал явно задать поле info_aprox в код перед добавлением и подтверждением изменений:

Код: Выделить всё

            ensureRequiredField(solrDoc, "info_aprox", "default_value");
ensureRequiredField(solrDoc, "infocompus_aprox", "default_value");
ensureRequiredField(solrDoc, "infocompus_exact", "default_value");
ensureRequiredField(solrDoc, "content_aprox", "default_value");
ensureRequiredField(solrDoc, "content_exact", "default_value");
ensureRequiredField(solrDoc, "header_aprox", "default_value");
ensureRequiredField(solrDoc, "header_exact", "default_value");
ensureRequiredField(solrDoc, "info", "default_value");
ensureRequiredField(solrDoc, "infocompus", "default_value");
private void ensureRequiredField(SolrInputDocument solrDoc, String fieldName, String defaultValue) {
if (Objects.isNull(solrDoc.getField(fieldName))) {
solrDoc.addField(fieldName, defaultValue);
}
if (Objects.isNull(solrDoc.getField(fieldName))) {
System.out.println("Required field missing: " + fieldName);
solrDoc.addField(fieldName, defaultValue);
}
}
эти поля появляются, когда я печатаю объект SolrInputDocument solrDoc.
Я также пытался сделать info_aprox требуемым="false", но это не помогло.
Я думал о создании solrDoc в файле json и отправке запроса на завивку вместо метода SolrClient.add

Подробнее здесь: https://stackoverflow.com/questions/788 ... ired-field
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»