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"}
Другие вопросы по тегам