0

我在 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;
      "'

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

4

2 回答 2

0

在 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
于 2020-09-12T18:04:58.653 回答
-1

好的,我想出了如何做到这一点。

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

那完成了工作。

于 2020-03-13T19:37:30.643 回答