Я недавно начал внедрять solr-cloud на AWS EC2 для поисковых приложений. Я создал 2 AWS экземпляра Ec2 со следующими конфигурациями ---
- Тип EC2 - t2.medium
- ram - 4 ГБ
- Дисковое пространство - 8 ГБ
- ОС - ubuntu 18.04
Для 2 экземпляров EC2 я создал группу безопасности, которая разрешает все входящие трафики c. NACL имеет настройки по умолчанию, которые также разрешают весь входящий трафик c.
Шаги для установки Apache Solr -
- s sh в ec2:
ssh -i "pem_file" ubuntu@ec2-public-ipv4-address
cd в каталог / opt run ->
sudo apt-update
run ->
sudo apt-get openjdk-11
Check java -version Выполнить ->
wget https://archive.apache.org/dist/lucene/solr/8.3.0/solr-8.3.0.tgz
Выполнить ->
tar -xvzf solr-8.3.0.tgz
export SOLR_HOME=/opt/solr-8.3.0
Добавить /opt/solr-8.3.0 в переменную среды Path Обновите файл sudo vim / etc / hosts с помощью hosts - a. publi c -ip-v4-address-of-ec2 solr-node-1 Запустил Solr с помощью следующей команды ->
sudo bin/solr start -c -p 8983 -h solr-node-1 -force
Проверка открытых портов с помощью - >
sudo lsof -i -P -n | grep LISTEN
Создание коллекций, осколков и реплик с использованием --->
bin/solr create -c travasko -d sample_techproducts_configs -n travasko_configs -shards 2 -rf 2 -p 8983
Я повторил тот же процесс на другом компьютере EC2 и запустил на нем solr. Теперь, чтобы использовать обработчик импорта данных в solr, я отредактировал следующие файлы:
- solrconfig. xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
data-config. xml
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://examplerds.cuhj86yfdpid.us-east-1.rds.amazonaws.com:3306/TRAVASKODB1"
user="examplerds"
password="examplerds#123"/>
<document>
<entity name="MOMENTS"
pk="MOMENT_ID"
query="SELECT MOMENT_ID,MOMENT_TEXT FROM MOMENTS"
deltaImportQuery="SELECT MOMENT_ID,MOMENT_TEXT FROM MOMENTS WHERE MOMENT_ID='${dih.delta.MOMENT_ID}'"
deltaQuery="SELECT MOMENT_ID FROM MOMENTS WHERE LAST_MODIFIED > '${dih.last_index_time}'"
>
<field column="MOMENT_ID" name="MOMENT_ID"/>
<field column="MOMENT_TEXT" name="MOMENT_TEXT"/>
</entity>
</document>
</dataConfig>
managed_schema
<schema name="MOMENTS" version="1.5">
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="MOMENT_ID" type="integer" indexed="true" stored="true" required="true" multiValued="false" />
<field name="MOMENT_TEXT" type="string" indexed="true" stored="true" multiValued="false" />
</schema>
Скачано mysql jdb c с помощью следующей команды:
wget -q "http://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/5.1.32/mysql-connector-java-5.1.32.jar" -O mysql-connector-java.jar
Добавить в solrconfig. xml:
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java.jar" />
После редактирования указанных выше файлов я загрузил их в облачное хранилище с помощью следующей команды zookeper ->
bin/solr zk -n travasko_config -z solr-node-1:9983 cp /opt/solr-8.3.0/server/solr/configsets/_default/conf/managed-schema zk:/configs/travasko_config/managed-schema
Затем я проверил все вышеупомянутые файлы в облаке solr и смог заметить изменения, которые я добавил. Текущая проблема заключается в том, что когда я выбираю созданную мной коллекцию и нажимаю на Dataimport, он выбрасывает ошибка, как показано ниже --->
The solrconfig.xml file for this index does not have an operational DataImportHandler defined!
Примечание: Экземпляры AWS RDS и EC2 находятся в одном VP C, совместно использующих одну и ту же группу безопасности.
Так почему же файл solrconfig. xml выдает ошибку при импорте данных? Что мне здесь не хватает?