[英]CURL not working well with docker-compose, Elasticsearch and Windows 10
下面列出了我的 docker-compose.yml 文件。 這就是我要的:
這是我到目前為止得到的:
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.