我使用Elasticsearch來存儲系統漏洞。現在我的典型項是如何查詢嵌套列表中的項目?
{
_id: somenadomid
_source: {
"ip": "10.10.10.10",
"vuln_name": "v1",
"vuln_type": 1
}
這種方法的優點在於簡化查詢(「機器的數量與類型1的vuln」 - >聚集,「漏洞的數量」 - 一個query_all
搜索和相關total
值,...)。
它ASLO有缺點,特別是:
- 的信息在很大程度上demultiplied:關於一臺主機的信息被複制的所有漏洞
- 有一樣多的行的漏洞,而不是主機(50倍平均更多)
- 自然容器是「主機」而不是「漏洞」 - 它可以更容易地更新,刪除等。
所以我正在考慮改變計劃,「主機」基地之一:
{
_id: machine1
_source: {
"ip": "10.10.10.10",
"vuln": [
{
"name": "v1",
"type": 1
},
{
"name": "v2",
"type": 1
}
]
}
我遇到的問題是,我仍然從根本上查詢的漏洞和不知道如何「爆炸」他們在查詢中。
具體(我相信我的問題會傾向於圍繞這個家庭的查詢),我怎麼可以查詢
type
1(而不是主機的漏洞總數 - 可以有1型的數vulns每個主機的基本查詢檢索作爲主機的條目)- 與上面相同,但是對漏洞名稱(例如
type
1與name
中的「Microsoft」的漏洞數量)進行了一些過濾 - 過濾是針對漏洞的一個功能,而不是主機)