2016-08-24 46 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服務器正常工作。 –