tshark -ek 创建 elasticsearch 6.0 不接受的重复键

tshark -ek 创建 elasticsearch 6.0 不接受的重复键

我尝试将 pcap 文件输入到 elasticsearch 中。因此我首先将 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 中有重复的字段。我读到 elasticsearch 6.0 不再接受重复的键。我检查了一下,我的 json 文件确实包含许多重复的键。但我读到

tshark -T ek

应该自行进行重复数据删除,并且选项--no-duplicate-keys似乎已经消失(我的tshark版本是2.2.6)。

那么如何将我的 pcap 数据放入 elasticsearch 中?

答案1

我遇到了同样的问题。显然最新的开发版本 (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

答案2

将数据提供给任何其他 JSON 解析器(然后转储回 JSON)。大多数解析器都有选项可以悄悄忽略重复字段,保留第一个或最后一个字段。

例如,可以使用命令行工具jq或:jshon

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

相关内容