• solr8.0.0基本安装和在springboot中的基本使用(win10)


    1、下载solr

      下载地址:http://archive.apache.org/dist/lucene/solr/

      该地址可以也可以下载以前的版本,我这边下载的solr-8.0.0.zip版本。下载完成之后放在的D:project目录下,然后解压到当前目录。

    2、启动、关闭solr

      在解压之后的solr目录中找到bin文件夹,进去之后右键进入Powershell输入以下命令:

    启动 .solr start
    关闭 .solr stop -all

    3、创建core

      在solr目录中的serversolr文件夹中创建一个core文件夹,我这边文件夹名称叫做xjxcc。然后把serversolrconfigsetssample_techproducts_configs下面的conf文件夹复制到刚才创建的core文件夹下面。

      完成上面操作之后启动solr,启动成功之后打开浏览器进入http://127.0.0.1:8983/solr/#/地址,就可以看见solr的管理界面。点击左侧的Core Admin,在新页面的name和instanceDir输入框中分别修改为刚才创建的core文件夹名称(我这里是xjxcc),然后点击下面Add Core按钮即可成功创建core(本来截了一张操作图,结果CSDN上传图片报未知错误)。

      创建成功之后,会在你刚才创建的core文件夹下面生成一个文件夹和一个文件,这样即表示创建成功。

    4、创建springboot项目和测试代码

      怎么创建springboot项目就不说了,下面贴上主要文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.xjxcc</groupId>
        <artifactId>solrTest</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <name>solrTest</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.6.RELEASE</version>
            <relativePath />
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-solr</artifactId>
            </dependency>
    
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>2.7.0</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>2.6.1</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    server:
      context-path: /
      port: 9633
    spring:
      data:
        solr:
          #后面这个xjxcc就是core文件夹的名称,这里也可以不用写这个,如果这里不指定core,那么在代码中使用的时候,就需要指定core。
          #代码中可以指定core的地方有注释可以看
          host: http://127.0.0.1:8983/solr/xjxcc
    @EnableSwagger2
    @RestController
    @RequestMapping("/")
    public class SolrController {
    
        @Autowired
        private SolrClient client;
    
        @PostMapping("/insert")
        public String insert(String content) throws IOException, SolrServerException {
            try {
                String idStr = String.valueOf(System.currentTimeMillis());
                SolrInputDocument doc = new SolrInputDocument();
                doc.setField("id", idStr);
                doc.setField("name", content);
    
                client.add(doc);//如果配置文件中没有指定core,这个方法的第一个参数就需要指定core名称,比如client.add("xjxcc", doc);
                client.commit();//如果配置文件中没有指定core,这个方法的第一个参数就需要指定core名称client.commit("xjxcc");
                return idStr;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "error";
        }
    }

      然后启动该项目之后,进入http://localhost:9633/swagger-ui.html地址即可测试插入索引操作。插入成功之后,在solr管理界面的左下方有一个下拉框,选择你创建的core之后,再选择Query,往下拖到最后,点击Execute Query即可看见你刚才插入的索引。

    其他问题:

      刚才我们代码中插入了两个列(id、name),如果你想新增一个列,比如名称叫做zhangsan,然后启动项目,在插入索引,在solr管理平台中就看不见这个列名和列对应的值,原因是id、name这两列在solr中已经默认配置了。这种情况解决方式如下:

      在你创建的core文件夹下面,打开conf文件夹,修改里面的managed-schema文件,修改地点如下:

    132行后面增加(后面这几行随意位置增加就可以)
    <field name="zhangsan" type="text_general" indexed="true" stored="true"/>
    
    245行后面增加(后面这几行随意位置增加就可以)
    <copyField source="zhangsan" dest="text"/>

      修改完成之后重启solr,然后重新插入索引就可以成功操作了。

  • 相关阅读:
    聊聊、Highcharts 动态数据
    聊聊、Zookeeper Linux 启动
    聊聊、Zookeeper 客户端 Curator
    聊聊、Zookeeper 客户端 ZkClient
    聊聊、Zookeeper API
    聊聊、Zookeeper 数据结构和操作命令
    聊聊、Java 网络编程
    《Mysql 索引
    《Mysql 事务
    《Mysql 一条 SQL 更新语句是如何执行的?(Redo log)》
  • 原文地址:https://www.cnblogs.com/kawhileonardfans/p/10966903.html
Copyright © 2020-2023  润新知