Docker 无法在ElasticSearch上加载并使用同义词.txt文件
我正在使用以下docker-compose.yml创建ElasticSearch群集:Docker 无法在ElasticSearch上加载并使用同义词.txt文件,docker,
elasticsearch,docker-compose,windows-subsystem-for-linux,docker-for-windows,Docker,
elasticsearch,Docker Compose,Windows Subsystem For Linux,Docker For Windows,我正在使用以下docker-compose.yml创建ElasticSearch群集: version: '3.3' services: elasticsearch1: image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2 container_name: elasticsearch1 environment: ... ulimits: memlock: so
version: '3.3'
services:
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
container_name: elasticsearch1
environment:
...
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
- ${PWD}/data/thesaurus/output:/usr/share/elasticsearch/config/extra
ports:
- 9200:9200
networks:
- elastic
elasticsearch2:
...
volumes:
data01:
driver: local
data02:
driver: local
networks:
elastic:
driver: bridge
我的索引包含:
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1,
"index" : {
"analysis" : {
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms_path" : "extra/synonym.txt"
}
},
"analyzer" : {
"synonym" : {
"tokenizer" : "standard",
"filter" : ["lowercase", "synonym"]
}
}
}
}
当我尝试放入我的数据时,我得到:
{'error':{'root_cause':[{'type':'非法参数_exception','reason':'无法构建同义词','type':'非法参数_exception','reason':'无法构建同义词','caused'由':{'type':'i__exception','reason':'是目录},'状态:'400}
有趣的是,当我运行:docker exec elasticsearch1 cat config/extra/synonym.txt
时,我得到一个错误:cat:config/extra/synonym.txt:是一个目录
如何加载和使用synonym.txt文件?如弹性文档中所述-:
上面配置了一个同义词过滤器,其路径为
analysis/synonym.txt(相对于配置位置)。同义词
然后使用过滤器配置分析仪
因此,您将替换同义词路径
:
"synonyms_path" : "/extra/synonym.txt"
在:
事实证明,这是WSL的一个问题——请参见:github.com/docker/for-win/issues/2151 作为一种解决方法,我将synonym.txt放在Windows目录中,然后链接到它,如下所示:
volumes:
- data01:/usr/share/elasticsearch/data
- /c/QAMaker:/usr/share/elasticsearch/config/extra
注意:我的Windows文件系统安装在Docker for Windows和WSL发行版的
/c
。。。如果在我的发行版中,Windows文件系统安装在默认的/mnt/c
上,我不确定这是否可行。谢谢,但它仍然不起作用。。。请参阅更新的问题。请尝试docker exec-it elasticsearch1/bin/bash,然后尝试ls-al/usr/share/elasticsearch/config/extra/此文件夹的内容是什么?我认为它只是一个synonym.txt目录,对吗?docker之外的${PWD}/data/thesaurus/output的内容是什么?docker在这里创建了一个synonym.txt文件夹?这是WSL的一个问题。。。无论如何,谢谢你的帮助。我认为我的问题是由于WSL:
volumes:
- data01:/usr/share/elasticsearch/data
- /c/QAMaker:/usr/share/elasticsearch/config/extra