2015-07-16 5 views
1

Я новичок в Solr, на самом деле я попробовал индексировать таблицу базы данных в Solr вручную, т. Е. Создав новый файл данных config.xml и выполнив полный импорт из SolU webUI, успешно сделал это.Как сделать Solr Dataimport (т.е. из RDBMS) с использованием Java API?

Но теперь мне нужно сделать то же самое на Java. Поэтому мне нужно знать следующие вещи с помощью Java:

  • Как установить Solr источник данных в Java API
  • Как установить сущность и запрос
  • Как запустить полный импорт

На самом деле, для импорта данных мы пишем конфигурационный файл, например, ниже

<?xml version="1.0" encoding="UTF-8" ?> 
<dataConfig> 
<dataSource type="JdbcDataSource" 
      driver="com.mysql.jdbc.Driver"    url="jdbc:mysql://localhost:3306/test_db" 
      user="root" 
      password="cloudera"/> 
<document> 
    <entity name="emp" 
    query="select id,name from emp"> 
    <field column="id" name="id"/> 
    <field column="name" name="name"/>  
    </entity> 
</document> 
</dataConfig> 

и эту информацию о файле конфигурации we wil л обеспечивают в solrconfig.xml, как показано ниже

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
     <lst name="defaults"> 
      <str name="config">db-data-config.xml</str> 
     </lst> 
</requestHandler> 

Но мое требование, я не хочу, чтобы настроить любой XML-файл, как выше, просто я хочу сделать все это только с Java, так что мне нужно, чтобы установить все конфигурации, которые я дал в выше XML с самого Java кода, то есть что-то вроде ниже

ModifiableSolrParams params = new ModifiableSolrParams(); 
    params.set("Datasource","JdbcDataSource") 
    params.set("driver","com.mysql.jdbc.Driver") 
    params.set("url","jdbc:mysql://localhost:3306/test_db") 
    params.set("user","cloudera") 
    params.set("password","cloudera") 
    params.set("query","select * from emp"),etc. 

Это третий раз я вывешиваю этот вопрос, но никто не дает мне точное решение или просто скажите, возможно ли это или не?

+2

Если вы задали вопрос три раза и нет- один дал вам точное решение, может быть, пришло время либо самостоятельно выкопать источник (и сделать патч, если необходимо), либо понять, что это, вероятно, невозможно? – MatsLindh

+0

Я не уверен, что это возможно только от SolrJ. Это может быть возможно из Spring Data Solr (никогда не пробовал, поэтому не может подтвердить). Вот довольно хорошая ссылка, чтобы проверить: http://www.petrikainulainen.net/programming/maven/running-solr-with-maven/ – TMBT

ответ

0

Немного поздно ответить, но это возможно, хотя бы с Solr 7.1 (не пробовал предыдущую версию).

Если вы зарегистрируетесь на http://yoursolrhostsolr/#/yourcore/dataimport//dataimport, вы можете выполнить импорт с помощью настраиваемой конфигурации данных, нажав на режим отладки.

Просмотрев журналы, вы можете увидеть, какие команды посылают интерфейсы администратора в solr. Он вызывает обработчик/dataimport, передающий файл dataConfig = xml в качестве аргумента.

Так что может быть сделано, как это с SolrJ:

ModifiableSolrParams params = new ModifiableSolrParams(); 
params.set("qt", "/dataimport"); 
params.set("command", "full-import"); 
params.set("dataConfig", <the data-import xml as string>); 
solrClient.query(params); 

Передавая dataConfig, то dataImportHandler игнорирует сконфигурированный данных-import.xml