tshark -ek создает дубликаты ключей, которые не поддерживает эластичный поиск 6.0
Я пытаюсь ввести файл pcap в asticsearch. Поэтому я сначала конвертирую файл pcap в json следующим образом:
tshark -T ek -j "http tcp ip" -x -r file.pcap > file.json
Затем я хочу загрузить его в asticsearch следующим образом:
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/_bulk?pretty' --data-binary "@file.json"
Но это терпит неудачу из-за многих ошибок, говорящих о наличии дублирующих полей в json. Я читал, что asticsearch 6.0 больше не принимает дубликаты ключей. Я проверил, и мой файл JSON содержит много дубликатов ключей. Но я читал это
tshark -T ek
предполагается, что он сам себя не дублирует, а опция --no-duplicate-keys, похоже, исчезла (у меня версия tshark 2.2.6).
Итак, как мне получить мои данные pcap в asticsearch?
2 ответа
Я была такая же проблема. По-видимому, в новейшей версии для разработчиков (2.5.1) это исправлено. Если вы используете Windows, это очень просто: просто скачайте установщик с https://www.wireshark.org/download.html и установите его. Если вы используете Linux, как я, вам нужно скачать исходный код оттуда и собрать wireshark из исходного кода. Для этого я посчитал эти источники полезными: https://scottlinux.com/2013/06/07/how-to-install-the-latest-wireshark-from-source-on-debian-or-ubuntu-linux/
https://www.wireshark.org/docs/wsug_html_chunked/ChBuildInstallUnixBuild.html
Передайте данные в любой другой анализатор JSON (а затем дамп обратно в JSON). Большинство парсеров имеют возможность тихо игнорировать дубликаты полей, сохраняя первое или последнее поле.
Например, инструменты командной строки jq
или же jshon
может быть использован:
$ echo '{"foo": "111", "bar": "222", "foo": "333"}' | jq .
{"foo": "333", "bar": "222"}