簡體   English   中英

CURL 不適用於 docker-compose、Elasticsearch 和 Windows10

[英]CURL not working well with docker-compose, Elasticsearch and Windows 10

下面列出了我的 docker-compose.yml 文件。 這就是我要的:

  • 通過 docker-compose 啟動 Elasticsearch 實例
  • 在 Elasticsearch 鏡像的容器中運行設置文件
  • 安裝文件應該從我的主機“復制”(所以使用卷)

這是我到目前為止得到的:

version: '3'

services:
  b-elastic:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.11.1
    container_name: b-elastic
    environment:
      - discovery.type=single-node
    volumes:
      - ./dockerelastic:/usr/share/elasticsearch/data
      - ./:/project
    ports:
      - 9200:9200 

我可以驗證 setupfile 是否存在:

$ docker exec -it b-elastic vi /project/database/elasticsearch/setup.json

給出:

{
    "settings": {
        "index" : {
            "max_ngram_diff": "3"
        },
        "analysis": {
            "analyzer": {
                "username_analyzer": {
                    "tokenizer": "username_tokenizer",
                    "filter": [
                        "lowercase"
                    ]
                }
            },
            "tokenizer": {
                "username_tokenizer": {
                    "type": "ngram",
                    "min_gram": "1",
                    "max_gram": "4"
                }
            }
        }
    },
    "mappings": {
        "properties": {
            "_all" : { "enabled" : false },
            "username": {
                "type": "text",
                "analyzer": "username_analyzer"
            }
        }
    }
}

現在我想在 Elasticsearch 上執行 setup.json:

$ docker exec -it b-elastic curl -X PUT http://localhost:9200/users -H  "Content-Type: application/json" --data-binary @project/database/elasticsearch/setup.json

這是 Docker 返回的內容:

Warning: Couldn't read data from file
Warning: "project/database/elasticsearch/setup.json", this makes an empty
Warning: POST.
{"acknowledged":true,"shards_acknowledged":true,"index":"users"}

看起來它已被確認,但是當我嘗試搜索用戶時,我收到此錯誤:

[match] analyzer [username_analyzer] not found

將 setup.json 的內容復制粘貼到 Postman 並在那里執行請求時,我沒有收到此錯誤。

如何通過 Windows 上的 Elasticsearch 容器中的卷執行文件?

編輯:接受的答案有效,但請注意,在使用 PowerShell 執行命令時它失敗了。 命令提示符有效。

看起來 curl 無法讀取您的 setup.json 文件,因此它創建了一個空索引。
請注意,當您使用 vi 時,您使用的是絕對路徑(/ 在開頭),但是當您使用 curl 時,您沒有使用。 嘗試

docker exec -it b-elastic curl -X PUT http://localhost:9200/users -H "Content-Type: application/json" --data-binary @/project/database/elasticsearch/setup.json

這不是,看看它是否有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM