web-dev-qa-db-ja.com

tshark -ekは、elasticsearch6.0が受け入れない重複キーを作成します

Elasticsearchにpcapファイルを入力しようとしています。だから私は最初に次のようにpcapファイルをjsonに変換します:

tshark -T ek -j "http tcp ip" -x -r file.pcap > file.json

次に、次のようにElasticsearchにロードします。

curl -H "Content-Type: application/json" -XPOST 'localhost:9200/_bulk?pretty' --data-binary "@file.json"

しかし、これは失敗し、jsonに重複するフィールドがあるという多くのエラーが発生します。 elasticsearch6.0は重複キーを受け入れなくなったことを読みました。チェックしたところ、jsonファイルに多くの重複キーが含まれています。しかし、私はそれを読みました

tshark -T ek

はそれ自体を重複排除することになっており、オプション--no-duplicate-keysはなくなったようです(私のtsharkバージョンは2.2.6です)。

では、pcapデータをelasticsearchに取り込むにはどうすればよいですか?

1
frank

私も同じ問題を抱えていました。どうやら最新の開発リリース(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

1
nkaenzig

データを他のJSONパーサーにフィードします(その後、JSONにダンプします)。ほとんどのパーサーには、重複するフィールドを静かに無視して、最初または最後のフィールドを保持するオプションがあります。

たとえば、コマンドラインツールjqまたはjshonを使用できます。

$ echo '{"foo": "111", "bar": "222", "foo": "333"}' | jq .
{"foo": "333", "bar": "222"}
0
user1686