qq_35873102 2018-11-22 06:14 采纳率: 0%
浏览 582

solrCould在admin界面创建collection,提示创建失败

配置好solrCould后,在admin界面创建collection时,提示创建失败。
可是刷新界面,里面已经创建成功,但是发现创建的副本目录下的conf文件夹都没有,重启服务器后,一直报找不到conf文件夹。

![图片说明

![图片说明

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 08:30
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    问题描述与具体场景如下:

    首先,我们明确以下几点以确保在Solr环境中创建collection时没有语法错误和解决相关的问题:

    1. Solr集群管理: 在设置Solr集群并配置可以使用solr.xml文件创建collections。确保集群中包含了三个核心,并且这两个核心被正确地分配到Zookeeper集群的两个子节点。例如,如果Zookeeper有/core1/core2两个子节点,可以在solr.xml文件中添加以下内容:
    <configuration>
        ...
        <cores>
            <core name="core1" zkClusterChildNodes="/core1" replication="sharding"/>
            <core name="core2" zkClusterChildNodes="/core2" replication="sharding"/>
        </cores>
    
        ...
    
    </configuration>
    

    在这个例子中,name属性用于指定索引集合的名称,zkClusterChildNodes属性指定了核心的子节点路径。当配置好集群后,应用需要通过curl -s http://localhost:8981/solr/core/<core-name>http://localhost:8981/solr/_admin/collection/<collection-name>来启动或启动收集器。

    1. 数据库操作: 创建目录或移动文件通常与Zookeeper相关,但这里我们仅处理在Zookeeper上进行操作。在命令行中执行以下步骤将确认conf文件夹确实存在:
    cd /path/to/conf
    
    # 如果不存在,则创建它
    if [ ! -d "conf" ]; then
        mkdir conf
    fi
    
    # 打开conf文件,尝试移动或重命名文件
    touch conf/data
    mv conf/data corexoo.shard1.replical
    mv conf/data corexoo.shard2.replical
    

    这将在根目录下创建两个名为corexoo.shard1.replicalcorexoo.shard2.replical的文件,代表Solr Core 1和Core 2的配置文件。

    1. Zookeeper配置: 现在我们检查Zookeeper是否成功加载了Solr配置。要检查这个状态,请运行以下命令:
    bin/zklist -da corezoo-shard1-replicai | grep 'conf'
    

    这段命令会在 /corezoo-shard1-replicai 根目录下列出所有 zookeeper 子节点及其配置。如果 conf 文件夹存在并且已被成功加载,那么这些配置项应该会显示为正常的路径格式。

    现在,根据以上信息,以下是针对您所描述的情况可能的解决方案:

    查找配置文件路径失败:

    • 首先确认在安装Solr时正确设置了Zookeeper集群(根目录中的solr.xml文件)的URL和密钥。确保其以http协议开头,且<zkHost><zkPort>字段匹配Zookeeper服务的端口。
    • 确保当前运行的Java程序对应的JAR包包含org.apache.solr.common.cloud.ZkUtil类和org.apache.solr.common.cloud.ZkController接口,这是Zookeeper API的核心实现类。

    错误解决方法:

    1. Zookeeper配置文件路径问题: 对于集群未成功配置的情况,可能是由于以下原因导致的:

      a. 错误的Zookeeper安装路径或环境变量设置 b. Zookeeper端口设置不正确,导致Zookeeper连接异常 c. Zookeeper的监听器配置问题,可能导致Zookeeper无法找到文件系统 d. Zookeeper的配置文件格式错误,导致Zookeeper读取失败 e. Zookeeper配置错误或者配置版本冲突,使得核心默认从指定的配置文件中加载而非全局配置文件

      为了验证上述问题,您可以尝试重新设置或调整以下组件的配置文件路径:

      • solr.xml:将集群的主节点URL改为正确的配置路径,例如 http://localhost:8981/solr/local
      • solr.xml.basedir:在 <url> 元素中定义Solr的根目录路径(例如 http://localhost:8981/solr/local),并确保该值指向solr.xml文件所在的目录。
      • zkConfig/zooKeeper.cfg 或者 zkConfig/zooKeeper.properties:确保对应的配置文件路径与集群配置一致。
      • zkCmd/conf/zooKeeper.sh:在bin目录中定义一个包含 zookeeper 命令的脚本,如 ./bin/zkctl start --config-file=/path/to/conf/zooKeeper.cfg,运行此脚本,可能会触发Zookeeper的初始化流程。
    2. Java程序中依赖问题: 如果org.apache.solr.common.cloud.ZkUtil类或其他相关的依赖缺失,可能导致Zookeeper无法正常工作。在您的项目中添加以下依赖列表:

      import com.google.common.collect.Maps;
      import org.apache.solr.common.cloud.ZkUtil;
      

      注意:对于新的Spring Boot项目,您需要在pom.xml文件中添加以下依赖以确保Zookeeper的引入:

      <dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>30.1.1</version>
      </dependency>
      
    3. Java程序路径问题: 如果你使用的是IDE,如IntelliJ IDEA、Eclipse等,可能因为其集成开发环境(IDEA Build Path)配置问题导致Java应用程序找不到配置文件路径。尝试打开你的Java项目的构建路径(build path -> Settings),删除或重命名 .settings 文件夹,重新导入你的模块依赖,确保它们的绝对路径引用与solr.xml文件对应。

    4. Java程序路径或工作目录与Zookeeper服务器位置冲突: 如果你在不同的物理机器(例如本地主机或云环境)上运行你的应用程序,Java程序路径或工作目录与Zookeeper服务器位置可能存在冲突。确保你的Java程序的执行环境路径正确引用了你的Zookeeper服务器地址,可以通过以下方式来验证:

      a. 修改application.yml文件,将其主配置路径更改为/path/to/zk-server:,即http://zk-server:2181/。 b. 在application.properties文件中更改solr.hostsolr.port属性,使其指向你的Zookeeper服务器IP地址。 c. 使用内置的Spring Cloud ZooKeeper整合工具(如Maven、Gradle)的Zookeeper集成配置或编写自定义Zookeeper客户端,以确保依赖关系和配置配置正确无误。

    请根据上述步骤排查具体的配置问题并解决,同时对可能出现的问题进一步了解并记录日志输出以追踪调试过程。注意,以上示例是基于Java 11和Apache Solr 8.x的操作,具体命令可能会根据实际情况略有差异。如果你使用的是其他编程语言,操作步骤和命令可能会有所不同。建议查阅官方文档和相应的 Solr 集成文档以获取最新和最精确的信息。

    评论

报告相同问题?