Я полностью новый с стеком ELK и особенно с ES. Я пытаюсь импортировать JSON-файл, который я получил с помощью API-интерфейса Google Admin SDK, и я хочу импортировать его в Elasticsearch.Импортировать файл API Google 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