代码之家  ›  专栏  ›  技术社区  ›  ScalaBoy

如何将数据导入docker上的Elasticsearch?

  •  1
  • ScalaBoy  · 技术社区  · 6 年前

    elasticsearch:
        image: docker.elastic.co/elasticsearch/elasticsearch:5.5.0
        environment:
          - cluster.name=my-docker-cluster
          - bootstrap.memory_lock=true
          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
          - xpack.security.enabled=false
          - http.host=0.0.0.0
        ulimits:
          memlock:
            soft: -1
            hard: -1
          nofile:
            soft: 65536
            hard: 65536
        cap_add:
          - IPC_LOCK
        volumes:
          - ./src/elastic:/home
        ports:
          - 9200
          - 9300
        networks:
          - my_network
    

    弹性搜索容器已启动并运行。但是,我不知道如何导入数据。

    我找到了Elasticsearch容器的IP(指定为 XXX.XX.XX.X 并执行以下命令:

    curl -X PUT -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
      "type": "fs",
      "settings": {
        "location": "/home/test/etk_backup/myproject_backup"
      }
    }' "http://XXX.XX.XX.X:9200/_snapshot/myproject_backup"
    

    但我犯了这个错误:

    位置[/home/test/etk\u backup/myproject\u backup]与以下任何位置都不匹配 path.repo指定的位置,因为此设置为空“}]

    path.repo elasticsearch.yml 详情如下:

    path-repo: ["/home/test/etk_backup/myproject_backup"]
    

    但也犯了同样的错误。我如何解决这个问题?

    2 回复  |  直到 6 年前
        1
  •  0
  •   dwjv    6 年前

    请尝试以下方法:

    path.repo: ["/home/test/etk_backup/myproject_backup"]

        2
  •  0
  •   AdrienF    6 年前

    Elasticdump 将数据从一个索引复制到另一个索引(通常用于开发人员在其本地索引中拥有数据)。目前还不清楚它是否仍然被维护,但它在ES6.3上仍然适用于我们

    您可以这样使用它:

    $ npm install elasticdump -g
    $ elasticdump --input=https://XXX.XX.XX.X:9200/<index> --output /tmp/es-mapping --type=mapping --headers='{"Content-Type": "application/json"}'
    $ elasticdump --input=https://XXX.XX.XX.X:9200/<index> --output /tmp/es-data --type=data --headers='{"Content-Type": "application/json"}' [--searchBody '<some query to filter what's being copied>']
    $ elasticdump --input /tmp/es-mapping --output https://YYY.YY.YY.Y:9200/<index> --type mapping
    $ elasticdump --input /tmp/es-data --output https://YYY.YY.YY.Y:9200/<index> --type data
    

    您可能不需要保存到文件的中间步骤,但我发现,如果您在本地进行实验,并且在实验以破坏性方式失败时需要重新加载索引,那么这是一件很好的事情。