导出 MobileFirst Analytics 数据
Exporting MobileFirst Analytics data
我使用 Analytics API:
从我的 MobileFirst 7.1 客户端应用程序(iOS 的混合应用程序)捕获了一些事件日志
WL.Analytics.log({'Module': 'Account', 'Activity': 'Update account'}, 'Message Title');
而且我可以毫无问题地从分析控制台检索日志。
接下来我将使用 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":"*"}
其中 return 以下 JSON 数据:
[
{
"mfpAppName": "myApp",
"deviceOS": "ios",
"appID": "worklight",
"mfpAppVersion": "1.0",
"deviceOSversion": "7",
"deviceModel": "xxx",
"deviceID": "xxx",
"timestamp": "1472038253030",
"Module": "Account",
"Activity": "Update account"
}
]
我的问题:
- 如何根据自定义数据过滤 JSON 结果?例如,我想检索具有以下值的所有活动的日志:"Module":仅 "Account"。
- 如何对 JSON 结果进行排序,例如,根据时间戳值?
当我尝试将我自己的参数(例如 "filter")添加到 url 时,它会 return 一个错误:
{"err":"Unrecognized field \"filter\" (class com.ibm.mobile.analytics.server.rest.params.ExportParameters), 未标记为可忽略 (29 个已知属性: , \"level\", \"validationCode\"、\"serverIpAddress\"、\"mfpAppVersion\"、\"hours\"、\"realm\"、\"adapter\"、\"debug\"、\ "offset\"、\"mfpAppName\"、\"event\"、\"deviceOSversion\"、\"timestampKey\"、\"endDate\" [截断]])\n 在 [源: java.io.StringReader@4c3deb33; line: 1, column: 33] (through reference chain: com.ibm.mobile.analytics.server.rest.params.ExportParameters[\"search\"])"}
我可以知道在哪里可以找到它提到的所有“29 个已知属性”吗?
我了解到 MFP Analytics 正在使用 ElasticSearch 作为其引擎,我试图找到有关此的任何信息但无济于事。
为了实现您的目标,您将必须启用 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
我使用 Analytics API:
从我的 MobileFirst 7.1 客户端应用程序(iOS 的混合应用程序)捕获了一些事件日志WL.Analytics.log({'Module': 'Account', 'Activity': 'Update account'}, 'Message Title');
而且我可以毫无问题地从分析控制台检索日志。
接下来我将使用 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":"*"}
其中 return 以下 JSON 数据:
[
{
"mfpAppName": "myApp",
"deviceOS": "ios",
"appID": "worklight",
"mfpAppVersion": "1.0",
"deviceOSversion": "7",
"deviceModel": "xxx",
"deviceID": "xxx",
"timestamp": "1472038253030",
"Module": "Account",
"Activity": "Update account"
}
]
我的问题:
- 如何根据自定义数据过滤 JSON 结果?例如,我想检索具有以下值的所有活动的日志:"Module":仅 "Account"。
- 如何对 JSON 结果进行排序,例如,根据时间戳值?
当我尝试将我自己的参数(例如 "filter")添加到 url 时,它会 return 一个错误:
{"err":"Unrecognized field \"filter\" (class com.ibm.mobile.analytics.server.rest.params.ExportParameters), 未标记为可忽略 (29 个已知属性: , \"level\", \"validationCode\"、\"serverIpAddress\"、\"mfpAppVersion\"、\"hours\"、\"realm\"、\"adapter\"、\"debug\"、\ "offset\"、\"mfpAppName\"、\"event\"、\"deviceOSversion\"、\"timestampKey\"、\"endDate\" [截断]])\n 在 [源: java.io.StringReader@4c3deb33; line: 1, column: 33] (through reference chain: com.ibm.mobile.analytics.server.rest.params.ExportParameters[\"search\"])"}
我可以知道在哪里可以找到它提到的所有“29 个已知属性”吗?
我了解到 MFP Analytics 正在使用 ElasticSearch 作为其引擎,我试图找到有关此的任何信息但无济于事。
为了实现您的目标,您将必须启用 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