从Elasticsearch脚本访问记录器

ara*_*chr 7 aggregation elasticsearch

我积极地使用脚本进行评分和聚合.我无法弄清楚的一件事是如何从脚本中发出日志.我试过console.log,但后来没有成功.请告诉我,我如何从我的groovy脚本中发出日志.

Vin*_*han 9

这可以通过访问全局Elasticsearch记录器实例来完成.它的groovy示例如下所示您应该能够为javascript和其他脚本语言做类似的事情.

import  org.elasticsearch.common.logging.*; 
ESLogger logger=ESLoggerFactory.getLogger('myscript'); 
logger.info('This is a log message'); 
Run Code Online (Sandbox Code Playgroud)

因此,当您进行术语聚合时,您可以执行以下操作 -

  "aggregations": {
      "debug":{
          "terms":{
              "script":"import  org.elasticsearch.common.logging.*; ESLogger logger=ESLoggerFactory.getLogger('myscript'); logger.info('This is a log message'); return doc['myField'].value;"
          }
      }
}
Run Code Online (Sandbox Code Playgroud)

Elasticsearch的一些优秀人员针对一个问题提供了很好的文档.

链接 - https://github.com/elasticsearch/elasticsearch/issues/9068

在这里也给出了一些例子.

  • 对于使用Elasticsearch 2.2或更高版本的用户,您需要专门允许导入类.请参阅http://stackoverflow.com/questions/36820449/elasticsearch-unable-to-import-logger (2认同)