【问题标题】:Using a groovy script *file* in an elasticsearch query - groovy script file location在弹性搜索查询中使用 groovy 脚本 *file* - groovy 脚本文件位置
【发布时间】: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


【解决方案1】:

将您的*.groovy 文件放在/etc/elasticsearch/scripts 文件夹下(意味着省略config)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2012-01-22
    • 2015-06-30
    相关资源
    最近更新 更多