我正在从 docker 运行 solr 9.3 并尝试与 django-haystack 集成。 我无法配置
solrconfig.xml
和 schema.xml
并且不确定在哪里添加这些文件。
我尝试使用
schema.xml
生成 python manage.py build_solr_schema
但我再次不知道如何/在哪里放置这些文件。预先感谢。
要使用 Haystack 将 Solr 与 Django 集成,您需要确保正在运行的 Solr 实例具有正确的配置。由于您是从 Docker 运行 Solr,因此与独立安装相比,该过程可能会有所不同。设置方法如下:
生成架构:
您已经使用以下方法生成了
schema.xml
:
python manage.py build_solr_schema
自定义 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
替换为您的核心或您计划创建的核心的名称。
构建您的自定义 Docker 镜像:
在与您的
Dockerfile
相同的目录中,运行:
docker build -t custom_solr:9.3 .
这将创建一个名为
custom_solr
且带有标签 9.3
的图像。
运行您的自定义 Docker 映像:
您现在可以运行自定义 Solr 映像。如果您还没有创建核心,请先创建它:
docker run --name solr_instance -d -p 8983:8983 custom_solr:9.3 solr-precreate my_core
再次将
my_core
替换为您的核心名称。如果核心已经创建,您可以直接运行容器,而无需使用 solr-precreate
命令。
将 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 核心的名称。
最终检查:
一切设置完毕后,重新启动 Django 服务器并检查 Haystack 是否可以与 Solr 通信。您可能需要运行
python manage.py update_index
以确保数据正确索引。
请记住,使用 Docker 时,容器内的配置是短暂的。如果删除容器,您将丢失这些配置。通过如上所述创建自定义 Docker 映像,您可以确保始终可以使用您的特定配置启动 Solr 容器。