Вставьте заголовок для каждого документа перед загрузкой в эластичный поиск
У меня есть файл ndjson в следующем формате
{"field1": "data1" , "field2": "data2"}
{"field1": "data1" , "field2": "data2"}
....
Я хочу добавить заголовок, как
{"index": {}}
перед каждым документом перед использованием массовой операции я обнаружил похожий вопрос: Elasticsearch Bulk JSON Data
Решение этой команды jq:
jq -cr ".[]" input.json | while read line; do echo '{"index":{}}'; echo $line; done > bulk.json
Но я получаю эту ошибку:
'while' is not recognized as a internal or external command
Что я делаю неправильно? У меня работает Windows Или есть лучшее решение? Спасибо
1 ответ
while
в вашем примере есть конструкция, которая обычно встроена в дружественную для разработчика оболочку, такую как, например, sh, bash или zsh, но windows не предоставляет готовые решения. Смотрите документацию по bash, например.
Так что, если это одноразовая вещь, возможно, самым быстрым решением будет просто использовать текстовый редактор и добавить необходимые строки действий с помощью нескольких функций мульти-курсора.
С другой стороны, если вы ограничены Windows, но хотите, чтобы какая-то лучшая оболочка использовала это чаще, вам следует взглянуть на проект cmder, который предоставляет вам среду bash для рабочего стола Windows при использовании полной версии, которая является упакованный с мерзавцем для окон. Это должно позволить вам использовать такие функции сценариев даже в среде, отличной от Linux или Mac.