在 Docker 中 运行 时向 Solr 添加字段?

Add field to Solr when running in Docker?

我是 运行 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;
      "'

如有任何建议,我们将不胜感激!

好的,我知道怎么做了。

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

成功了。

在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