0
对于ELK堆栈,尤其是ES,我是全新的。 我正在尝试导入使用Google Admin SDK API的JSON文件,并且想将其导入Elasticsearch。将Google API JSON文件导入Elasticsearch
到目前为止,这是我的数据的JSON结构:
{
"kind": "reports#activities",
"nextPageToken": string,
"items": [
{
"kind": "audit#activity",
"id": {
"time": datetime,
"uniqueQualifier": long,
"applicationName": string,
"customerId": string
},
"actor": {
"callerType": string,
"email": string,
"profileId": long,
"key": string
},
"ownerDomain": string,
"ipAddress": string,
"events": [
{
"type": string,
"name": string,
"parameters": [
{
"name": string,
"value": string,
"intValue": long,
"boolValue": boolean
}
]
}
]
}
]
}
所以我决定先使用此命令上传的JSON文件到ES:
curl -s -XPOST 'localhost:9200/_bulk' --data-binary @documents.json
,但我得到了一些错误:
{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"Malformed action/metadata line [1], expected START_OBJECT or END_OBJECT but found [START_ARRAY]"}],"type":"illegal_argument_exception","reason":"Malformed action/metadata line [1], expected START_OBJECT or END_OBJECT but found [START_ARRAY]"},"status":400}
我该怎么办?
谢谢你的帮助!
感谢您的提示Val!实际上,我的JSON数据包含数组(项目[],事件[]和参数[]),所以我稍微编辑了有关索引创建的代码,方法是将括号替换为括号,并且工作正常! – Felz
不,你不应该这样做,ES会为你创建这些数组;请参见[this](https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html) ) – Val