2016-09-30 6 views
0

Я использую весна-загрузки-стартер-данных-Solr и хотел бы использовать schmea cration поддержку Spring Data Solr, как указано в documentation:Включение schemaCreationSupport в весенне-загрузки-стартер-данных-Solr

Число автоматических схем будет проверять типы вашего домена, когда контекст приложений обновляется и заполняется новые поля в ваш индекс на основе конфигурации свойств. Для этого требуется, чтобы solr запускался в режиме Schemaless.

Однако я не могу этого достичь. Насколько я могу судить, стартер Spring Boot не включил флаг schemaCreationSupport в аннотации @EnableSolrRepositories. Так что я попытался следующий:

@SpringBootApplication 
@EnableSolrRepositories(schemaCreationSupport = true) 
public class MyApplication { 
    @Bean 
    public SolrOperations solrTemplate(SolrClient solr) { 
    return new SolrTemplate(solr); 
    } 
} 

Но, глядя в Wireshark я не могу видеть все вызовы к API Solr схемы при сохранении новых объектов через репозиторий.

Должен ли он работать, или что мне не хватает? Я использую Solr 6.2.0 с Spring Boot 1.4.1.

ответ

1

Я столкнулся с той же проблемой. После некоторой отладки я нашел основную причину, почему создание схемы (или обновление) вообще не происходит:

С помощью аннотации @EnableSolrRepositories расширение Spring добавит фабричный компонент в контекст, который создает SolrTemplate, который используется в репозиториях. Этот шаблон инициализирует SolrPersistentEntitySchemaCreator, который должен сделать создание/обновление.

public void afterPropertiesSet() { 

    if (this.mappingContext == null) { 
    this.mappingContext = new SimpleSolrMappingContext(
     new SolrPersistentEntitySchemaCreator(this.solrClientFactory) 
     .enable(this.schemaCreationFeatures)); 
    } 

    // ... 
} 

Проблема заключается в том, что флаг schemaCreationFeatures (что позволяет создателю) устанавливается после того, как завод называет в afterPropertiesSet(), так что невозможно для создателя сделать это работа.

Я создам проблему в треевом выпуске spring-data-solr. Не вижу никакого обходного пути прямо сейчас, другой либо имеет пользовательский fork/build весенних данных, либо расширяет кучу весенних классов и пытается установить флаг перед использованием (но это может быть сделано).

+0

Большое спасибо за анализ. – neptoon

 Смежные вопросы

  • Нет связанных вопросов^_^