docker - 无法在 ElasticSearch 上加载和使用 synonym.txt 文件
问题描述
我正在使用以下 docker-compose.yml 创建 ElasticSearch 集群:
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"]
}
}
}
}
当我尝试处理PUT
我的数据时,我得到:
{'error': {'root_cause': [{'type': 'illegal_argument_exception', 'reason': 'failed to build synonyms'}], 'type': 'illegal_argument_exception', 'reason': 'failed to build synonyms', 'caused_by': {'type': 'i_o_exception', 'reason': 'Is a directory'}}, 'status': 400}
有趣的是,当我运行: 时docker exec elasticsearch1 cat config/extra/synonym.txt
,我得到了错误:cat: config/extra/synonym.txt: Is a directory
如何加载和使用 synonym.txt 文件?
解决方案
正如弹性文档中所写 -这里:
上面配置了一个同义词过滤器,路径为 analysis/synonym.txt(相对于配置位置)。然后为同义词分析器配置过滤器。
所以你替换synonyms_path
:
"synonyms_path" : "/extra/synonym.txt"
在:
"synonyms_path" : "extra/synonym.txt"
推荐阅读
- itfoxtec-identity-saml2 - 如何使用 ITfoxtec 创建 IdP
- tomcat - 配置 https 后在端口 8443 启动 tomcat 版本 6 失败
- c++ - 可以将类函数称为无效吗?
- c# - 从给定的代码中,我只显示 1 个重复次数最多的数字,即 6、6、6、6,但我也想带出第二个数字:3、3、3、3,
- c# - 类的多个实例
- r - 一个 y 轴上的 2 个图 - 错误:提供给连续刻度的离散值
- javascript - 带参数的函数不在 Javascript AddEventListener 中运行
- azure - 可以使用 ARM 模板在 MSSQL 中创建其他用户和角色吗?
- c - Token 忽略String中的一些元素
- javascript - 尝试到达定义的路线时出现 404 错误