【发布时间】:2015-06-18 06:45:06
【问题描述】:
我正在尝试引用我创建的 groovy 脚本文件,但无法找到(见下文)。我没有配置目录,而 elasticsearch.yml 在 etc/elasticsearch 中。我在 usr/share/elasticsearch 下添加了 config/scripts/,所以我现在有了 /usr/share/elasticsearch/config/scripts/。
在那里,我放置了我的脚本 - 'source_types.groovy',我运行 chown elasticsearch:elasticsearch 以确保名为 elasticsearch 的用户拥有它。
我还在 etc/elasticsearch 中放了一个 config/scripts/source_types.groovy。
我正在尝试按如下方式调用脚本:
GET nr-01/_search
{
"query": {
"filtered": {
"filter": {
"script": {
"file": "source_types.groovy",
"lang": "groovy"
}
}
}
}
}
我得到了
nested: SearchParseException[[nr-01][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\": {\n \"filtered\": {\n \"filter\": {\n \"script\": {\n \"file\": \"source_types.groovy\",\n \"lang\": \"groovy\"\n }\n }\n }\n }\n}\n]]]; nested: ElasticsearchIllegalArgumentException[Unable to find on disk script source_types.groovy]; }]",
"status": 400
显然找不到该文件。剧本去哪儿了?我说的对吗?
【问题讨论】:
-
如果你去掉文件名中的扩展名,比如
"file": "source_types",你发现有什么不同吗? -
另外,尝试将您的 *.groovy 文件放在
/etc/elasticsearch/scripts文件夹下(意思是省略config)。 -
@AndreiStefan 我刚刚发现脚本应该按照您的建议位于 /etc/elasticsearch/scripts 文件夹下。我回来回答我的问题,但既然你回答了,如果你把它作为答案,我会把它标记为正确的。谢谢。顺便说一句,我将提出另一个相关问题,所以请注意!谢谢! :-)
-
哇 - 烦人 - 我想发布一个不同的问题以避免添加到这个问题,因为这个问题确实是答案,但堆栈溢出告诉我我只能在 90 分钟内发布一次。等待后续问题的时间很长!我从集群中 3 个节点中的 2 个节点收到响应,但在第 3 个节点上找不到该文件,但它位于具有相同名称和权限的所有节点上!
-
那么,您在同一位置的所有三个节点上都有确切的文件,但您只能从两个节点获得响应?
标签: groovy elasticsearch