centos7安装及使用solr7.4

一、准备环境

1、一台linux服务器(Centos7)
2、安装jdk8环境 

3、准备solr7.8安装包

二、安装(我这里使用的是solr自带的应用容器,也可以集成到tomcat)

1)从官网下载最新solr

wget http://mirrors.shuosc.org/apache/lucene/solr/7.4.0/solr-7.4.0.tgz

2)解压,安装

tar -zxvf solr-7.2.0.tgz

3)相关命令

bin/solr stop -all 		关闭solr服务
bin/solr start -force 		开启solr服务
bin/solr status			查看solr服务状态

三、使用solr

1、点击Core Admin

centos7安装及使用solr7.4_第1张图片

2、按照步骤去创建,然后点击确认会出现

centos7安装及使用solr7.4_第2张图片

3、这个错误是因为找不到对应的配置文件,进入server/solr/configsets/_default/直接把里面的conf 复制到 你新建的core中 你新建的core在server/solr目录下

命令如下: 
1、进入到server/solr/configsets/_default下

cd /usr/local/install/solr7.4.0/server/solr/configsets/_default/

2、然后复制到新建的test中

cp -r conf /usr/local/install/solr7.4.0/server/solr/test/

3、到这儿core已创建好,相应的操作可以去网上寻找,我在这就不详细说明

三、连接mysql数据库

1)首先处理jar

mysql-connector-java-x.x.x.jar    solr-dataimporthandler-extras-5.1.0.jar    solr-dataimporthandler-7.1.0.jar 

拷贝到 solr\server\solr-webapp\webapp\WEB-INF\lib 下

1)配置连接信息

找到你新建的 core 下的solrconfig.xml文件(solrconfig.xml 文件所在目录是: solr\server\solr\test\conf),打开找到第一个requestHandler,在他下面加入如下内容

 
        
          data-config.xml 
        

再在你创建的core目录的conf下创建data-config.xml文件,内容如下



    
    
        
            
            
            
        
    

        dataSource不多说,一看就明白,

        entity --代表数据库表,column--代表数据库表字段,name--代表solr中字段名

        (注意:创建这个文件的时候第一行不能有空格或者空行,否则报错)

在managed-schema文件中添加对应于数据库字段的field,建议在 solr 可视化界面操作。当然,一定要手动修改 managed-schema 文件也不是不可以,但是每次更改完需要重新加载 Core,或者粗暴一点直接重新启动solr也可以。那么,直接修改 managed-schema 文件的。到这里你应该能联系上数据库了,也可以导入数据了。

三、在java中的应用

 
            org.apache.solr
            solr-solrj
            5.3.1
一个测试小例子:
package com.hzl.admin.api.test;

import com.hzl.admin.core.entity.User;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;

import java.io.IOException;
import java.util.List;

public class SolrTest {

    //指定solr服务器的地址
    private final static String SOLR_URL = "http://192.168.1.253:8983/solr/";

    /**
     * 创建SolrServer对象
     * 

* 该对象有两个可以使用,都是线程安全的 * 1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的 * 2、 EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了 * 3、solr 4.0之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient * * @return */ public HttpSolrClient createSolrServer() { HttpSolrClient solr = null; solr = new HttpSolrClient(SOLR_URL); return solr; } /** * 往索引库添加文档 * * @throws IOException * @throws SolrServerException */ public void addDoc() throws SolrServerException, IOException { //构造一篇文档 SolrInputDocument document = new SolrInputDocument(); //往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义 document.addField("id", "8"); document.addField("name", "周新星"); document.addField("password", "646456"); //获得一个solr服务端的请求,去提交 ,选择具体的某一个solr core HttpSolrClient solr = new HttpSolrClient(SOLR_URL + "test"); solr.add(document); solr.commit(); solr.close(); } /** * 根据id从索引库删除文档 */ public void deleteDocumentById() throws Exception { //选择具体的某一个solr core HttpSolrClient server = new HttpSolrClient(SOLR_URL + "test"); //删除文档 server.deleteById("1"); //删除所有的索引 //solr.deleteByQuery("*:*"); //提交修改 server.commit(); server.close(); } /** * 查询 * * @throws Exception */ public void querySolr() throws Exception { HttpSolrClient solrServer = new HttpSolrClient(SOLR_URL + "test/"); SolrQuery query = new SolrQuery(); // 下面设置solr查询参数 // 参数q 查询所有 // query.set("q", "*:*"); // 相关查询,比如某条数据某个字段含有周、星、驰三个字 将会查询出来 ,这个作用适用于联想查询 query.set("q", "name:ha~ OR password:ha~"); // 参数fq, 给query增加过滤查询条件 // id为0-4 query.addFilterQuery("id:[32 TO 65]"); // 给query增加布尔过滤条件 // query.addFilterQuery("description:演员"); // description字段中含有“演员”两字的数据 // 参数df,给query设置默认搜索域 query.set("df", "name"); // 参数sort,设置返回结果的排序规则 query.setSort("id", SolrQuery.ORDER.desc); // 设置分页参数 query.setStart(0); // 每一页多少值 query.setRows(10); // 参数hl,设置高亮 query.setHighlight(true); // 设置高亮的字段 query.addHighlightField("name"); // 设置高亮的样式 query.setHighlightSimplePre(""); query.setHighlightSimplePost(""); // 获取查询结果 QueryResponse response = solrServer.query(query); // 两种结果获取:得到文档集合或者实体对象 // 查询得到文档的集合 SolrDocumentList solrDocumentList = response.getResults(); System.out.println("通过文档集合获取查询的结果"); System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound()); // 遍历列表 for (SolrDocument doc : solrDocumentList) { System.out.println("id:" + doc.get("id") + " name:" + doc.get("name") + " password:" + doc.get("password")); } // 得到实体对象 List tmpLists = response.getBeans(User.class); if (tmpLists != null && tmpLists.size() > 0) { System.out.println("通过文档集合获取查询的结果"); for (User per : tmpLists) { System.out.println("id:" + per.getId() + " name:" + per.getUserName() + " password:" + per.getPassword()); } } } public static void main(String[] args) throws Exception { SolrTest solr = new SolrTest(); //solr.createSolrServer(); // solr.addDoc(); // solr.deleteDocumentById(); solr.querySolr(); } }

到这里,你应该有点兴奋了,经过努力实现了简单运用solr。后续考虑在tomcat运行,实现定时增量导入,以及在java中更详尽的应用。

你可能感兴趣的:(◆,服务器端,◆,#,solr)