(二)java8-solr6.4.1-tomcat8.5创建core 和java Demo

创建项目:

1.环境搭建准备:http://blog.csdn.net/qq_30097433/article/details/56847604
2. 修改solr-home下的solr.xml文件,注解掉zookeeper搭建集群配置,我后面采用master-slave的形式

 <!-- 
  <solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">${jetty.port:8983}</int>
    <str name="hostContext">${hostContext:solr}</str>

    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>

    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
    <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
    <str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str>
    <str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>

  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:600000}</int>
    <int name="connTimeout">${connTimeout:60000}</int>
  </shardHandlerFactory>
-->

以上这代码块注释即可(默认没有注释)
3. 在sorl-home文件夹下创建【my_solr】文件夹。
4. 将【solr-6.4.1\example\example-DIH\solr\solr】下的conf文件夹拷贝到【my_solr】文件夹下。包含如下文件
文件夹内容
5. 修改core.properties中内容(这个name的值实际上就core的名称,可以任意命名):

        name=my_core

6.重启tomcat查看:http://localhost:8081/solr/index.html
这里写图片描述
这里写图片描述

7.看到以上基本上创建项目已经成功了。

demo测试

  1. 以上配置是默认对schema的管理是使用managed-schema(在sole-home/my_core/conf/下),我在这不更改其他自定义配置
    这里写图片描述
    看图(managed-schema配置信息):在JAVA代码中我会使用默认的field(红框标识的两个),后面文章中会主要说明该配置.
  2. 导入maven依赖:
       <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>6.4.1</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.7</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
        </dependency>

3 . 编写如下代码:

import java.io.IOException;

import org.apache.solr.client.solrj.SolrClient;
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.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
/**
 * API简单操作
 * @author weishuai
 *
 */
public class SolrTest {
    // solr 部署的url
    private static final String url = "http://localhost:8081/solr";
    // home
    private static final String uri = "my_solr";

    // 添加一条数据
    public static void addDoc() throws SolrServerException, IOException {
        // 得到请求
        SolrClient sc = getSolrClient();
        // 拼装文本
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", "id");
        // 其他参数省略。。。
        doc.addField("title", "我深深地爱着你,solr");
        sc.add(doc);
        sc.commit();
    }

    // 删除一条数据
    public static void deleteDocById() throws SolrServerException, IOException {
        // 得到请求
        SolrClient sc = getSolrClient();
        sc.deleteById("0");//id为0的数据
        sc.commit();
    }

    // 删除全部数据
    private static void deleteAllDoc() throws SolrServerException, IOException {
        // 得到请求
        SolrClient sc = getSolrClient();
        sc.deleteByQuery("*:*");
        sc.commit();
    }

    // 根据id修改一个数据(与添加类似:存在就修改,不存在就添加)
    private static void updateDocById() throws SolrServerException, IOException {
        // 得到请求
        SolrClient sc = getSolrClient();
        // 拼装文本
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", "id");
        // 其他省略。。。
        doc.addField("title", "我深深地爱着你,solr !");
        sc.add(doc);
        sc.commit();
    }

    // 根据Id查询一条数据
    private static void getDocById() throws SolrServerException, IOException {
        // 得到请求
        SolrClient sc = getSolrClient();
        SolrDocument sd = sc.getById("id");
        System.out.println(sd); // 打印为:SolrDocument{id=id,
                                // content_test=[我深深地爱着你,solr !],
                                // _version_=1560544234369449984}
        System.out.println(sd.get("id"));
        System.out.println(sd.get("title"));
        System.out.println(sd.get("_version_"));

    }

    // 全部查询
    private static void getDocByAll() throws SolrServerException, IOException {
        SolrClient sc = getSolrClient();
         SolrQuery query = new SolrQuery();
         //设置查询条件(全部)
         query.setQuery("*:*");
         //查询
        SolrDocumentList solrDocumentList =sc.query(query).getResults();
        //遍历结果集
        for (SolrDocument solrDocument : solrDocumentList) {
            System.out.println(solrDocument); //打印为:SolrDocument{id=id, content_test=[我深深地爱着你,solr !], _version_=1560544234369449984}
            System.out.println(solrDocument.get("id"));
            System.out.println(solrDocument.get("title"));
            System.out.println(solrDocument.get("_version_"));
        }
    }

    public static void main(String[] args) throws SolrServerException,
            IOException {
        // 添加一个索引
        //addDoc();
        // 根据Id删一条数据
        // deleteDocById();
        // 删除全部数据
        // deleteAllDoc();
        // 修改一条数据
        // updateDocById();
        // 根据Id查询一条数据
        // getDocById();
        // 全部查询
        getDocByAll();
    }

    /**
     * 该对象有两个可以使用,都是线程安全的 1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的 2、
     * EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了 3、solr
     * 4.0之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient
     * 
     * @return
     */
    public static SolrClient getSolrClient() {
        return new HttpSolrClient(url + "/" + uri);
    }
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值