收藏 分销(赏)

Solr和ElasticSearch单机环境搭建以及连接数据库(MySQL-Oracle).docx

上传人:仙人****88 文档编号:11895716 上传时间:2025-08-19 格式:DOCX 页数:27 大小:1.84MB 下载积分:10 金币
下载 相关 举报
Solr和ElasticSearch单机环境搭建以及连接数据库(MySQL-Oracle).docx_第1页
第1页 / 共27页
Solr和ElasticSearch单机环境搭建以及连接数据库(MySQL-Oracle).docx_第2页
第2页 / 共27页


点击查看更多>>
资源描述
Solr和ElasticSearch的单机环境搭建 一、 Solr环境搭建 1. Solr简介 Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引。 2. Solr的工作 ①  分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 ②  实时分析的分布式搜索引擎。 ③  可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 3. Solr的优点 1、无结构化的自然语言文本为中心; 2、信息浏览占主导地位的用户需求; 3、以Document这种扁平化并且独立的结构组织信息(区别与关系型数据库); 4、要求组织成的数据模式灵活多变(不像数据库表一样要求统一的字段)。 4. Solr环境搭建的准备 1. Solr安装包最新版本是Solr6.2.1(截止2016.10.13):http://www-eu.apache.org/dist/lucene/solr/6.2.1/solr-6.2.1.zip 2. Tomcat作为服务器(Tomcat9) http://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.0.M11/bin/apache-tomcat-9.0.0.M11-windows-x64.zip 3. IK中文分词插件(或者MMSeg4J中文分词插件) IK分词插件现在支持到5.5.x的Solr,不过在Solr6.2.1上还是可以用的 MMSeg4J 最新版本2.3.0 4. 操作系统Windows10 5. 开始环境搭建 1. 解压Tomcat到本地磁盘X,根据需要命名,此处我们命名为Tomcat 2. 解压Solr6.2.1到磁盘任意位置,在这里我们解压到与Tomcat同级目录下,并且命名为solr 3. 进入solr目录,依次进./server/solr-webapp目录,在此目录下有webapp文件夹 复制此文件夹到Tomcat目录下的webapps文件夹下,并且根据需要命名,此处我们命名为solr如下图所示 4. 将Solr目录下server/lib/ext目录下的所有jar包复制到Tomcat目录下webapps/solr/WEB-INF/lib下(图片请放大观看) 5. 将solr\server\resources目录下的log4j.properties文件拷贝到Tomcat\webapps\solr\WEB-INF\classes下,若不存在classes文件夹,需要手动创建一个 6. 在Tomcat/webapps/solr目录下新建solrhome文件夹(此处根据需要命名),这是solr的core存放目录。 7. 将solr/server/solr下的所有文件复制到solrhome中(实测证明只需要solr.xml即可,如果在集群分布式系统下,可能需要zoo.cfg) 8. 进入Tomcat/webapps/solr/WEB-INF/目录下,找到web.xml并打开编辑。修改如下代码 <!-- <env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/put/your/solr/home/here</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry> --> 效果如下图所示 9. 进入Tomcat/bin目录,运行startup.bat。 10. 打开浏览器,访问http://localhost:8080/solr/index.html,如果看到如下界面说明安装成功 6. 为solr创建core 1. 在Tomcat/webapps/solr/solrhome下新建文件夹,根据需要命名,此处我 们命名为 core0 2. 进入core文件夹,新建文本文档命名为core.properties,以文本方式打 开,在里面添加 name=core0 保存并关闭 3. 将solr/example/example-DIH/solr/solr下的conf文件夹复制到 Tomcat/webapps/solr/solrhome/core0下 4. 将solr/dist下的solr-dataimporthandler-6.2.1.jar和 solr-dataimporthandler-extras-6.2.1.jar复制到 Tomcat/webapps/solr/WEB-INF/lib中 5. 此时重启Tomcat,(启动过程中可能会报错,如果是缺少jar包的话,就去solr的包里找,复制到WEB-INF/lib中)打开http://localhost:8080/solr/index.html就会发现添加了core0 7. 为solr的core添加数据源 以oracle为例,数据库中有如下表 表结构如下 1. 找到Tomcat/webapps/solr/solrhome/core0/conf下的solr-data-config.xml,复制一份到此目录下,根据需要命名,此处我们命名为test-data-config.xml。编辑此文件 <dataConfig> <document> <entity name="sep" processor="SolrEntityProcessor" url="http://127.0.0.1:8983/solr/db " query="*:*" fl="*,orig_version_l:_version_,ignored_price_c:price_c"/> </document> </dataConfig> 修改为 <dataConfig> <dataSource name="自定义名称" type="JdbcDataSource (type可选,默认是jdbc,另外还有HttpDataSource等)" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@//数据库地址/数据库名" user="用户名" password="密码"/> <document> <entity name="表名" dataSource="oracleDS" pk="id" query="SELECT * FROM 表名(sql语句根据需求写)" transformer="DateFormatTransformer"> <field column="表中列名" name="fields的名称自定义"/> <field column="表中列名" name="fields的名称自定义"/> </entity> </document> </dataConfig> 在我们的数据库中可以写为 2. 编辑Tomcat/webapps/solr/solrhome/core0/conf下的solrconfig.xml文件,找到 <requestHandler name="/dataimport" class="solr.DataImportHandler"> <lst name="defaults"> <str name="config">solr-data-config.xml</str> </lst> </requestHandler> 修改<str name="config">solr-data-config.xml</str>,将其改为 <str name="config">test-data-config.xml</str> 3. 进入Tomcat/webapps/solr/solrhome/core0/conf,在solr5以上默认使用 managed-schema进行管理,但是我们仍然可以通过编写schema.xml对 数据格式进行设置。新建schema.xml,以文本方式打开,并且添加以下 内容 <?xml version="1.0" encoding="UTF-8" ?> <schema name="自定义名称" version="1.5"> < types> <fieldType name="string" class="solr.StrField" sortMissingLast="true" /> <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/> <fieldtype name="binary" class="solr.BinaryField"/> <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/> <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/> <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/> <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/> <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/> <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/> <fieldType name="pint" class="solr.IntField"/> <fieldType name="plong" class="solr.LongField"/> <fieldType name="pfloat" class="solr.FloatField"/> <fieldType name="pdouble" class="solr.DoubleField"/> <fieldType name="pdate" class="solr.DateField" sortMissingLast="true"/> <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/> <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/> <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/> <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/> <fieldType name="random" class="solr.RandomSortField" indexed="true" /> </types> <fields> <field name="id" type="int" indexed="true" stored="true" required="true" /> <field name="name" type="string" indexed="true" stored="true" multiValued="false" /> <dynamicField name="ignored_*" type="ignored" multiValued="true"/> </fields> <uniqueKey> ID</uniqueKey> <copyField source="id" dest="int"/> <copyField source="name" dest="text"/> </schema> 注意红字部分,根据需求写,其中type="string" type是上面fieldType中定义的 <uniqueKey> ID</uniqueKey> 必填,ID与表中的主键ID一致。 4. 将ojdbc.jar(如果是MySQL的话就是mysql-jdbc)的jar包复制到Tomcat/webapps/solr/WEB-INF/lib下 5. 浏览器访问http://localhost:8080/solr/index.html,在左边选中core0,点击dataimport按钮,选择我们需要的实体,执行导入 6. 点击左侧query按钮,可以执行查询操作 8. 为solr的core添加分词器 分词器有多个,在此我们只讨论最常用的两个,MMSeg4J和IKAnalyzer 1. MMSeg4J的添加 1) 将mmseg4j-core-1.10.0.jar和mmseg4j-solr-2.3.0.jar复制到 Tomcat/webapps/solr/WEB-INF/lib下 2) 将词库放在磁盘某个目录下比如,我们将词库放在了 D:\Solr\Tomcat\webapps\solr\solrhome\dic这个目录下,将词库重命名为以words开头的dic类型的文件,比如words-my.dic,wordsmy.dic,words_my.dic。 3) 在Tomcat/webapps/solr/solrhone/core0/conf/下,修改managed-schema在<types>标签里面添加如下代码,其中红字是词典位置路径(绝对路径),mmseg4j会自动读取words开头的dic文件。 <!--手动配置MMSeg4j分词器--> <fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="D:\Solr\Tomcat\webapps\solr\solrhome\dic"/> </analyzer> </fieldType> <fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="D:\Solr\Tomcat\webapps\solr\solrhome\dic"/> </analyzer> </fieldType> <fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="D:\Solr\Tomcat\webapps\solr\solrhome\dic"/> </analyzer> </fieldType> 4) 重启Tomcat,此时我们就可以在浏览器中使用Analyze功能了 2. IKAnalyzer的添加(以下简称IK) 1) 和MMSeg4j一样,先把IKr的jar包放入Tomcat/webapps/solr/WEB-INF/lib目录下。 2) 将IK的词库放在D:\Solr\Tomcat\webapps\solr\solrhome\dic目录下,根据需要命名,其中mydic是词库,stopword是停词词库。 3) 复制IKAnalyzer.cfg.xml到\Tomcat\webapps\solr\WEB-INF\classes目录下, 打开并修改以下内容 <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户可以在这里配置自己的扩展字典 <entry key="ext_dict">mydict.dic;</entry> --> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords">stopword.dic;</entry> </properties> 注意,路径是相对于classes文件夹的相对路径 4) 以文本方式编辑Tomcat/webapps/solr/solrhome/core0/conf目录下的 managed-schema文件,在后面添加以下内容 <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> 保存并退出。 5) 重启Tomcat,访问http://localhost:8080/solr/index.html#/core0/analysis点击选择text_ik即可使用IK分词器 9. 其他 至此为止Solr在windows上的搭建基本完成,更多的Solr操作可以参考网上的教程,在此不再赘述。 另外,Linux上的环境搭建与Windows类似。 二、 ElasticSearch环境搭建 1. Elastic简介 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 2. Elastic的优点 1. Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。 2. Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。 3. 处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。 4. Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。 5. 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。 3. Elastic环境搭建准备工作 1. 操作系统为Ubuntu16.1,由于Elastic对Windows支持不是很好,很多操作在Windows无法完成或者需要安装很多其他辅助软件,所以我们选择在Linux系统上搭建这个环境 2. Java JDK1.8 for linux,Elastic 2.x版本不再支持JDK1.7以下的版本,注意压缩版是tar.gz格式,千万别搞错。 3. Elastic安装包,下载地址如下,格式跟上面一样https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.4/elasticsearch-2.3.4.tar.gz 4. 我们选择的ElasticSearch是2.3.4版本(截止2016.10.13最新版本为2.4.1), 之所以选择这个版本是因为如果我们要连接数据库作为数据源的话,需要Elasticsearch-jdbc作为驱动来连接,而这个驱动最新版本为2.3.4,为了避免驱动不兼容的问题,我们选择这个版本。 5. Elasticsearch-jdbc驱动http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.4.1/elasticsearch-jdbc-2.3.4.1-dist.zip 6. Elasticsearch Head插件,这是一个可以在网页上对Elastic进行可视化操作的插件。 7. Ojdbc驱动或者MySQL-jdbc驱动jar包 4. 开始环境搭建 1. 解压JDK到磁盘目录,可以在终端使用unzip filename命令,也可使用ubuntu自带的归档管理器进行解压,解压完成之后的文件目录如下图 2. 下面就要配置Java的环境变量,由于普通用户没有更改权限,所以我们要先为要更改的文件设置权限。(更改profile会使环境变量对这台机器上的所有用户都生效,比较稳妥的办法是更改个人目录下.bash_profile这个文件,这样可以使环境变量只对此用户生效,和下面类似(这是个隐藏文件,需要ls -a命令才能看到)) 打开终端,输入命令 cd /etc sudo su (输入你的密码,之后就会进入root用户权限) chmod 777 profile exit 为profile这个文件更改权限,然后退出root 之后有两种方法,一种是通过文件浏览器进入/etc目录,用自带的编辑器修改并保存另一种是用vi编辑器: 继续输入 vi profile 进入vi编辑器,注意,这是是命令行模式,是不能对文件进行编辑的,可以使用方向键将光标移动至文件末尾,按 i 键进入编辑模式,在文件末尾添加如下(如果输入错误,在请不要按backspace键删除,要按delete键) export JAVA_HOME=/usr/share/jdk1.6.0_14 (你的jdk目录) export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 完成后,按esc,退出编辑模式,进入命令行模式,按下:键(shift + ;),进入底行模式,输入wq回车。然后注销重新登录。 打开终端输入 java -version 回车,如果出现如下图所示的界面,说明安装成功 3. 解压Elasticsearch,然后进入elastic根目录下的bin文件夹,输入命令 ./elsticsearch回车, 之后Elastic就会启动,大概如下图所示 4. 然后浏览器打开http://localhost:9200/如果出现说明安装成功。 5. 安装插件 在elastic根目录下新建plugins文件夹,将head插件包解压缩到plugins目录下,并且重命名为head。 重启elastic,浏览器输入http://localhost:9200/_plugins/head/出现如下所示说明安装成功 6. 连接Oracle数据库 1. 将elasticsearch-jdbc解压到磁盘(最好是elastic根目录,方便),重命名为jdbc(不重命名也可)。 2. 进入jdbc/bin看到如下图所示文件目录 3. 复制oracle-connection-properties.sh到bin文件夹的上级目录。并重命名(也可直接修改这个文件,在这里我们为了方便使用和不造成目录的混乱,选择将其复制到Elastic根目录下 重命名为oracle.sh) 4. 修改此文件 #!/bin/sh (sh根据你使用的shell来写,比如在我的机器上这样写是无法运行的,要改成#!/bin/sh才能正常运行) # This example is a template to connect to Oracle # The JDBC URL and SQL must be replaced by working ones. DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" bin=${DIR}/../bin lib=${DIR}/../lib (JDBC的路径这里DIR定义了sh文件的路径,bin和lib的路径就可以在这个路径后面接着添加,这就是上面我们为什么把sh文件放在elastic根目录下的原因) echo ' { "type" : "jdbc", "jdbc" : { "url" : "jdbc:oracle:thin:@//host:1521/sid",oracle数据库的地址 "connection_properties" : { "oracle.jdbc.TcpNoDelay" : false, "useFetchSizeWithLongColumn" : false, ".CONNECT_TIMEOUT" : 10000, "oracle.jdbc.ReadTimeout" : 50000 }, "user" : "user", "password" : "password", "sql" : "select or_id as \"_id\", or_tan as \"tan\" from orders",查询语句 "index" : "myoracle", 索引名称 "type" : "myoracle", 类型名称 "elasticsearch" : { "cluster" : "elasticsearch", 簇的名称,要跟设置的一致 "host" : "localhost", 地址 "port" : 9300 端口 }, "max_bulk_actions" : 20000, "max_concurrent_bulk_requests" : 10, "index_settings" : { "index" : { "number_of_shards" : 1, "number_of_replica" : 0 } } } } ' | java \ -cp "${lib}/*" \ -Dlog4j.configurationFile=${bin}/log4j2.xml \ org.xbib.tools.Runner \ org.xbib.tools.JDBCImporter 5. 保存文件,打开浏览器,进入head插件,新建index,名字要和oracle中的Index一致。 6. 打开终端,进入oracle.sh所在目录,输入./oracle.sh回车,等待运行成功。 7. 此时在浏览器刷新即可看到数据。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服