环境 centos7 hadoop2.6.0 solr-7.5.0
一、创建hdfs为存储的core
1.在hdfs创建索引数据目录
[root@centos7 bin]# hadoop fs -mkdir /user/solr/
[root@centos7 bin]# hadoop fs -chown linbin /user/solr
2. 创建core目录
mkdir solr-7.5.0/server/solr/hdfscore
cp -rf solr-7.5.0/example/files/conf solr-7.5.0/server/solr/hdfscore
3. 修改文件 hdfscore/conf/solfconfig.xml
设置数据目录 注释原来的目录指定
<!-- <directoryFactory name="DirectoryFactory"
class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
-->
<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
<str name="solr.hdfs.home">hdfs://centos7:8020/user/solr</str>
<bool name="solr.hdfs.blockcache.enabled">true</bool>
<int name="solr.hdfs.blockcache.slab.count">1</int>
<bool name="solr.hdfs.blockcache.direct.memory.allocation">true</bool>
<int name="solr.hdfs.blockcache.blocksperbank">16384</int>
<int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">192</int>
</directoryFactory>
找到 :
<lockType>${solr.lock.type:native}</lockType>
修改为:
<lockType>${solr.lock.type:hdfs}</lockType>
4.启动solr服务,并在web界面创建新的“Add Core” 名为 "hdfscore"
5. 可以看见按预期创建了hdfscore
二. 从mysql导入数据
1.在mysql创建需要导入的样例数据
2.相关驱动程序查找并复制到lib目录
mkdir solr-7.5.0/server/solr/hdfscore/lib
3.修改配置文件,共三个 solrconfig.xml, data-import.xml, managed-schema.xml,其中 data-config.xml是新建文件
(1) solrconfig.xml 后面增加
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
(2) data-config.xml 内容
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
user="root"
password="123"/>
<document>
<entity name="product" query="select pid,name,catalog_name,price,descrition,picture from products">
<field column="pid" name="id"/>
<field column="name" name="product_name"/>
<field column="catalog_name" name="product_catalog_name"/>
<field column="price" name="product_price"/>
<field column="descrition" name="product_descrition"/>
<field column="picture" name="product_picture"/> </entity>
</document>
</dataConfig>
(3) managed-schema.xml 增加
<field name="product_name" type="string" indexed="true" stored="true" />
<field name="product_catalog_name" type="string" indexed="true" stored="true" />
<field name="product_price" type="string" indexed="true" stored="true" />
<field name="product_descrition" type="string" indexed="true" stored="true" />
<field name="product_picture" type="string" indexed="true" stored="true" />
4. 重新启动solr执行导入数据
bin/solr stop
bin/solr/start
6.测试执行检索
7. 浏览器直接检索也可以: http://centos7:8983/solr/hdfscore/select?q=*:*
9. 在hadoop hdfs目录可以看到创建的索引文件