如何使用 django-haystack 配置 solr

问题描述 投票:0回答:1

我正在从 docker 运行 solr 9.3 并尝试与 django-haystack 集成。 我无法配置

solrconfig.xml
schema.xml
并且不确定在哪里添加这些文件。

我尝试使用

schema.xml
生成
python manage.py build_solr_schema
但我再次不知道如何/在哪里放置这些文件。预先感谢。

django solr django-haystack
1个回答
0
投票

要使用 Haystack 将 Solr 与 Django 集成,您需要确保正在运行的 Solr 实例具有正确的配置。由于您是从 Docker 运行 Solr,因此与独立安装相比,该过程可能会有所不同。设置方法如下:

  1. 生成架构

    您已经使用以下方法生成了

    schema.xml

    python manage.py build_solr_schema
    
  2. 自定义 Solr Docker 镜像:

    您将需要创建一个使用基础 Solr 映像的自定义 Docker 映像,然后添加您的自定义配置。

    这是一个例子

    Dockerfile

    FROM solr:9.3
    
    # Copy custom schema.xml and solrconfig.xml to the appropriate core directory
    COPY schema.xml /opt/solr/server/solr/my_core/conf/
    COPY solrconfig.xml /opt/solr/server/solr/my_core/conf/
    

    my_core
    替换为您的核心或您计划创建的核心的名称。

  3. 构建您的自定义 Docker 镜像:

    在与您的

    Dockerfile
    相同的目录中,运行:

    docker build -t custom_solr:9.3 .
    

    这将创建一个名为

    custom_solr
    且带有标签
    9.3
    的图像。

  4. 运行您的自定义 Docker 映像:

    您现在可以运行自定义 Solr 映像。如果您还没有创建核心,请先创建它:

    docker run --name solr_instance -d -p 8983:8983 custom_solr:9.3 solr-precreate my_core
    

    再次将

    my_core
    替换为您的核心名称。如果核心已经创建,您可以直接运行容器,而无需使用
    solr-precreate
    命令。

  5. 将 Django Haystack 连接到 Solr:

    在 Django

    settings.py
    中,确保将 Haystack 指向正确的 Solr URL:

    HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
            'URL': 'http://127.0.0.1:8983/solr/my_core',
        },
    }
    

    请记住将

    my_core
    替换为您的 Solr 核心的名称。

  6. 最终检查

    一切设置完毕后,重新启动 Django 服务器并检查 Haystack 是否可以与 Solr 通信。您可能需要运行

    python manage.py update_index
    以确保数据正确索引。

请记住,使用 Docker 时,容器内的配置是短暂的。如果删除容器,您将丢失这些配置。通过如上所述创建自定义 Docker 映像,您可以确保始终可以使用您的特定配置启动 Solr 容器。

© www.soinside.com 2019 - 2024. All rights reserved.