导出 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"
  }
]

我的问题:

  1. 如何根据自定义数据过滤 JSON 结果?例如,我想检索具有以下值的所有活动的日志:"Module":仅 "Account"。
  2. 如何对 JSON 结果进行排序,例如,根据时间戳值?
  3. 当我尝试将我自己的参数(例如 "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