2016-08-24 44 views
1

我已经捕捉到了从我MobileFirst 7.1客户端应用程序的一些事件日志使用Analytics API(混合动力适用于iOS):导出MobileFirst Analytics的数据

WL.Analytics.log({'Module': 'Account', 'Activity': 'Update account'}, 'Message Title'); 

我可以检索从Analytics控制台日志没有任何问题。

接下来我会使用Analytics API检索日志。下面是一个工作URL格式:

http://localhost:10080/analytics-service/data/administration/apps/worklight/export?query={"event":"CustomData","format":"json","limit":10,"offset":0,"startDate":"2016-08-24","endDate":"*"} 

返回以下JSON数据:

[ 
    { 
    "mfpAppName": "myApp", 
    "deviceOS": "ios", 
    "appID": "worklight", 
    "mfpAppVersion": "1.0", 
    "deviceOSversion": "7", 
    "deviceModel": "xxx", 
    "deviceID": "xxx", 
    "timestamp": "1472038253030", 
    "Module": "Account", 
    "Activity": "Update account" 
    } 
] 

我的问题:

  1. 我如何过滤我的JSON结果基于我的自定义数据?例如,我想为所有具有以下值的活动检索日志:“Module”:“Account”。
  2. 如何根据时间戳值对JSON结果进行排序?
  3. 当我试图在我自己的参数(例如“过滤器”)添加到URL,它会返回它说的错误:

    {“犯错”:“无法识别的领域\”过滤器\”(类com.ibm.mobile.analytics.server.rest.params.ExportParameters),未标记为可忽略的(29个已知属性:,\“level \”,\“validationCode \”,\“serverIpAddress \”,\“mfpAppVersion \” ,“小时”,“领域”,“适配器”,“调试”,“偏移量”,“mfpAppName”,“事件”,“deviceOSversion”,“ (source:[email protected]; line:1,column:33](通过引用链:com.ibm.mobile.analytics。“timestampKey”,\“endDate \”[truncated]])\ n。 server.rest.params.ExportParameters [\“search \”])“}

    我可以知道在哪里可以找到所有“29种已知属性”?

我了解到MFP Analytics使用ElasticSearch作为引擎,我试图找到任何有关此信息但无济于事。

回答

4

要实现您的目标,您必须启用Elasticsearch REST端点。如果您在Liberty服务器上,这非常简单,请使用下面的JNDI属性。

<jndiEntry jndiName="analytics/http.enabled" value="true"/> 
<jndiEntry jndiName="analytics/httpport" value="9500"/> 

启用Elasticsearch REST端点后,您可以在后端编写自定义查询。

你可以写类似下面的一个POST请求:

curl 'http://localhost:9500/worklight/_search?sort=timestamp:asc' -d '{"query" : {"wildcard":{"worklight_data.Module": {"value": "Account"}}}}' 

一些Elasticsearch引用可能对您有用: https://www.elastic.co/guide/en/elasticsearch/reference/2.1/search-uri-request.html https://www.elastic.co/guide/en/elasticsearch/reference/2.1/search-request-body.html

+2

嗨雪佛兰,感谢您使用ElasticSearch REST端点的尖。我已经在我的本地开发机器上测试过了,它可以工作。但是,当我尝试对我的远程开发服务器(在AWS上托管)执行相同操作时,它返回了“无法获得任何响应”错误。仅供参考,我们的远程开发服务器也在Liberty服务器上运行。我们在AWS管理中打开了端口9500,并在更新server.xml文件后重新启动了MFP实例。我在这里错过了什么?谢谢! –

+2

我找到了一个链接,它描述了可以在worklight.properties文件中的MobileFirst Server上设置的属性和配置:http://www.ibm.com/support/knowledgecenter/SSHSCD_7.1.0/com.ibm。 worklight.monitor.doc /监视器/ c_op_analytics_properties.html。但是.properties文件不使用XML 格式。如果我将上面的JNDI属性更改为如下形式,那么它是否正确:wl.analytics.httpport = 9500 | wl.analytics.http.enabled = true? –

+2

经过一周的试验和错误,发现Analytics Server使用另一个server.xml文件,并在其中插入JNDI属性。现在它可以从我们的AWS服务器正常工作。 –