2015-01-16 38 views
7

我积极使用脚本进行评分和聚合。我不知道的一件事是如何从脚本中发射日志。我试过console.log,但后来没有成功。请让我知道,我可以如何从我的groovy脚本发射日志。Elasticsearch脚本访问记录器

回答

9

这可以通过访问全局Elasticsearch记录器实例来完成。 其常规示例如下 您应该可以对JavaScript和其他脚本语言做类似的操作。

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

所以,当你做一个条款聚集,你可以这样做如下 -

"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;" 
      } 
     } 
} 

从Elasticsearch一些好乡亲给了反对的问题上有一个好的文档。

LINK - https://github.com/elasticsearch/elasticsearch/issues/9068

我也给出了一些例子here

+2

对于那些使用Elasticsearch 2.2或更高版本的人,您需要特别允许导入类。见http://stackoverflow.com/questions/36820449/elasticsearch-unable-to-import-logger – Aaron