我们在elasticsearch中有关于恶意软件的数据。我们必须用kibana来分析它。对于每个样本(恶意软件),我们都有一些SSL证书。这些是嵌套字段。我是弹性搜索的新手,很难在官方文档中找到我想要的内容。
我希望能够创建一个尊重这些规则的图表(即:折线图):
{
"mappings":{
"sample":{
"properties":{
"static":{
"x509Certificates":{
"type":"nested",
"properties":{
"Status":{
"type":"long"
},
"FileName":{
"type":"keyword"
},
"Serial":{
"type":"long"
},
"Signature":{
"type":"keyword"
},
"PublicKey":{
"type":"keyword"
},
"NotValidBefore":{
"type":"date",
"format":"epoch_millis"
},
"NotValidAfter":{
"type":"date",
"format":"epoch_millis"
},
"Subject":{
"type":"keyword"
},
"Issuer":{
"type":"keyword"
}
}
}
}
}
}
}
}
}
它没有用,因为没有“加入”。图表已创建,但信息毫无价值。
https://github.com/homeaway/kibana/tree/nestedSupport-5.2 它实际上是有帮助的。至少我们可以使用嵌套字段生成图形。但它并没有完全解决问题。
该查询类似于:
{
"bool": {
"must": {
"script": {
"script": {
"inline": "doc['Subject'].value == doc['Issuer'].value",
"lang": "painless"
}
}
}
}
}
我根本不确定,但是如果它搜索所有证书中的两个值中的至少一个是相等的。
我创建了一个类似于:
的简单布尔脚本字段doc['Subject'].value == doc['Issuer'].value
并创建了一个布尔值为true的查询。它部分工作。
它真的看起来像我想要的但是我不知道如何用这种方法说Issuer ==主题。
解决问题的最简单方法是什么,知道这不是我们唯一需要嵌套脚本过滤器的用例?
请不要犹豫要求澄清!
答案 0 :(得分:2)
如果您有脚本字段,那该怎么办?因为Subject
和Issuer
都是keyword
的类型:
def newfield = "";
if((doc['Subject'].value).equals(doc['Issuer'].value)){
newfield= "matched";
}else{
newfield= "not matched";
}
然后,您可以在图表中应用过滤器来使用上述脚本字段,如下所示:
scriptedFieldName:"matched"
希望这有帮助!