elasticsearch 混合嵌套查询和脚本筛选器 上下文
我们有关于elasticsearch中恶意软件的数据。我们必须用kibana分析它。对于每个示例(恶意软件),我们都有一些SSL证书。这些是嵌套字段。我是elasticsearch新手,很难在官方文档中找到我想要的内容 我想要什么 我希望能够根据以下规则创建图表(即:折线图):elasticsearch 混合嵌套查询和脚本筛选器 上下文,elasticsearch,kibana,kibana-5,elasticsearch,Kibana,Kibana 5,我们有关于elasticsearch中恶意软件的数据。我们必须用kibana分析它。对于每个示例(恶意软件),我们都有一些SSL证书。这些是嵌套字段。我是elasticsearch新手,很难在官方文档中找到我想要的内容 我想要什么 我希望能够根据以下规则创建图表(即:折线图): Y轴上的简单计数 X轴上的证书文件名 仅显示主题==颁发者 简化映射 我已经尝试过的事情 不使用嵌套对象 它不起作用,因为没有“加入”。图表已创建,但信息毫无价值 使用kibana嵌套fork 这实际上很有帮助。至
- Y轴上的简单计数
- X轴上的证书文件名
- 仅显示主题==颁发者
{
"bool": {
"must": {
"script": {
"script": {
"inline": "doc['Subject'].value == doc['Issuer'].value",
"lang": "painless"
}
}
}
}
}
doc['Subject'].value == doc['Issuer'].value
我一点也不确定,但这就像它搜索所有证书之间至少一个相等的值一样
使用脚本字段
我创建了一个简单的布尔脚本字段,类似于:
{
"bool": {
"must": {
"script": {
"script": {
"inline": "doc['Subject'].value == doc['Issuer'].value",
"lang": "painless"
}
}
}
}
}
doc['Subject'].value == doc['Issuer'].value
并创建了一个布尔值为true的查询。它部分起作用了
嵌套查询
它看起来确实像我想要的,但是,我不知道如何用这个方法说Issuer==Subject
我的问题
知道这不是我们唯一需要嵌套脚本过滤器的用例,解决问题的最简单方法是什么
请不要犹豫要求澄清 既然主题
和发行人
都是关键字
的类型,那么如果您有这样的脚本字段该怎么办
def newfield = "";
if((doc['Subject'].value).equals(doc['Issuer'].value)){
newfield= "matched";
}else{
newfield= "not matched";
}
然后,您可以通过在图形中应用过滤器来使用上面的脚本字段,如下所示:
scriptedFieldName:"matched"
希望这有帮助 ==和.equals()之间的区别是什么?
==
总是比较非原语的两个引用。equals()
方法比较字符串实例中的“值”,而不管两个对象引用是否引用同一个字符串实例。希望我能说清楚。这解释了为什么它以前不起作用。。。。。对于这种类型的用例,我更喜欢使用布尔值。但关键是要真正使用.equals()而不是==。非常感谢。