【问题标题】:Add field to Solr when running in Docker?在 Docker 中运行时向 Solr 添加字段?
【发布时间】:2020-03-12 17:52:37
【问题描述】:

我在 Docker 中运行 Solr。我需要在架构中添加一些自定义字段。 这通常可以通过类似于以下的命令来完成:

curl -X POST -H 'Content-type:application/json' --data-binary '{
  "add-field":{
     "name":"shelf",
     "type":"myNewTxtField",
     "stored":true },
  "add-field":{
     "name":"location",
     "type":"myNewTxtField",
     "stored":true },
  "add-copy-field":{
     "source":"shelf",
      "dest":[ "location", "catchall" ]}
}' http://localhost:8983/solr/gettingstarted/schema

但我已将 Solr 移至 Docker 容器,但我不知道如何在 docker-compose.yml 中执行相同操作。

我的 docker-compose.yml 使用以下命令启动 Solr:

solr:
    image: "solr:7.3.1"
...
command: 'bash -e -c "
        precreate-core mycore;
        cp -r /opt/solr/server/solr/configsets/_default /opt/solr/server/solr/configsets/mycore;
        cp /tmp/myconf/solr-mapping.xml /opt/solr/server/solr/configsets/mycore/conf/;
        rm /opt/solr/server/solr/configsets/mycore/conf/managed-schema;
        solr-foreground;
      "'

任何建议如何做到这一点将不胜感激!

【问题讨论】:

    标签: docker solr docker-compose solr-schema


    【解决方案1】:

    在 solr 镜像的 /opt/solr/server/solr/configsets/_default/conf 文件夹中有一个文件 managed-schema,它是一个 xml 文件,但没有扩展名。

    您必须使用 cp 命令从原始容器中导出:

    docker cp [your_solr_container]:/opt/solr/server/solr/configsets/_default/conf/managed-schema c:/your_folder/managed-schema
    

    现在您有了基本文件,您可以添加新字段并从 docker compose 传递到您的 docker 容器中:

    version: '3.3'
        services:
          solr:
            image: "solr:7.3.1"
            ports:
             - "8983:8983"
            volumes:
              - ./managed-schema:/opt/solr/server/solr/configsets/_default/conf/managed-schema
            entrypoint:
              - docker-entrypoint.sh
              - solr-precreate
              - mycore
    

    【讨论】:

      【解决方案2】:

      好的,我知道该怎么做。

      我从默认创建了 schema.xml 并在其中添加了字段。 然后我将此文件复制到容器中,并在命令中将我的 schema.xml 复制到我的核心的 conf 文件夹中。

      这样就完成了。

      【讨论】:

      • 您能否将最终的 docker-compose.yml 添加到您的答案中?它对我不起作用,并且根据 Docker compose GitHub 问题,无法通过 docker-compose 将外部文件复制到容器中。谢谢
      • 谢谢,但如果你不举个例子,那对我们就没用了
      猜你喜欢
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多