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

时间:2022-11-02 17:01:17

创建项目:

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】文件夹下。包含如下文件
(二)java8-solr6.4.1-tomcat8.5创建core 和java Demo
5. 修改core.properties中内容(这个name的值实际上就core的名称,可以任意命名):

 name=my_core

6.重启tomcat查看:http://localhost:8081/solr/index.html
(二)java8-solr6.4.1-tomcat8.5创建core 和java Demo
(二)java8-solr6.4.1-tomcat8.5创建core 和java Demo

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

demo测试

  1. 以上配置是默认对schema的管理是使用managed-schema(在sole-home/my_core/conf/下),我在这不更改其他自定义配置
    (二)java8-solr6.4.1-tomcat8.5创建core 和java Demo
    看图(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);
}
}