В настоящее время я разрабатываю сценарии bash, которые используют elasticsearch, и мне нужна хорошая обработка ошибок. В этой ситуации я пытаюсь добавить документ в поиск elastics и проверить, удалось ли выполнить операцию.Обработка ошибок с помощью curl и elasticsearch
Сначала я наивно попытался это:
response=$(curl -XPOST 'http://localhost:9200/indexation/document' -d '
{
"content":"'"$txt"'",,
"date_treatment":"'"$(date +%Y-%m-%d)"'"
}') && echo ok || echo fail
Но локон не работает таким образом, и по-прежнему возвращает успех (0 - который на самом деле логично), даже если запрос JSON, очевидно, неправильно (обратите внимание на двойной запятая в строке 3) и elasticsearch отображает ошибки.
Так что ответа нет. Теперь я думаю, что я должен проанализировать переменную $ response для ошибок catch (grep?). Я отправляю этот вопрос, чтобы получить подсказки или решения на пути сделать это надежным способом и убедиться, что я не пропущу очевидного решения (возможно, вариант завитка, который я не знаю?).
Благодарим за помощь!
Дополнительные полезные вещи
Примеры содержания $ ответа:
успех:
{
"_id": "AVQz7Fg0nF90YvJIX_2C",
"_index": "indexation",
"_shards": {
"failed": 0,
"successful": 1,
"total": 1
},
"_type": "document",
"_version": 1,
"created": true
}
ошибка:
{
"error": {
"caused_by": {
"reason": "json_parse_exception: Unexpected character (',' (code 44)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name\n at [Source: [email protected]f; line: 3, column: 17]",
"type": "json_parse_exception"
},
"reason": "failed to parse",
"root_cause": [
{
"reason": "json_parse_exception: Unexpected character (',' (code 44)): was expecting either valid name character (for unquoted name) or double-quote (for quoted) to start field name\n at [Source: [email protected]f; line: 3, column: 17]",
"type": "json_parse_exception"
}
],
"type": "mapper_parsing_exception"
},
"status": 400
}
Попробуйте напечатать статус 'response' путем добавления' 'Эхо $ после строки в сценарии у вас есть?. – Inian
И то, что я называю «успех» и «отказ», возвращает $ ?. Это в основном то, что я пытался с помощью && echo ok || echo fail', но когда я даю elasticsearch плохую просьбу, это не завиток, это elasticsearch. – 021
(не могу изменить по некоторым причинам) Я имел в виду возврат $? = 0 (успех) – 021