elasticsearch 混合嵌套查询和脚本筛选器 上下文,elasticsearch,kibana,kibana-5,elasticsearch,Kibana,Kibana 5" /> elasticsearch 混合嵌套查询和脚本筛选器 上下文,elasticsearch,kibana,kibana-5,elasticsearch,Kibana,Kibana 5" />

elasticsearch 混合嵌套查询和脚本筛选器 上下文

elasticsearch 混合嵌套查询和脚本筛选器 上下文,elasticsearch,kibana,kibana-5,elasticsearch,Kibana,Kibana 5,我们有关于elasticsearch中恶意软件的数据。我们必须用kibana分析它。对于每个示例(恶意软件),我们都有一些SSL证书。这些是嵌套字段。我是elasticsearch新手,很难在官方文档中找到我想要的内容 我想要什么 我希望能够根据以下规则创建图表(即:折线图): Y轴上的简单计数 X轴上的证书文件名 仅显示主题==颁发者 简化映射 我已经尝试过的事情 不使用嵌套对象 它不起作用,因为没有“加入”。图表已创建,但信息毫无价值 使用kibana嵌套fork 这实际上很有帮助。至

我们有关于elasticsearch中恶意软件的数据。我们必须用kibana分析它。对于每个示例(恶意软件),我们都有一些SSL证书。这些是嵌套字段。我是elasticsearch新手,很难在官方文档中找到我想要的内容

我想要什么 我希望能够根据以下规则创建图表(即:折线图):

  • Y轴上的简单计数
  • X轴上的证书文件名
  • 仅显示主题==颁发者
简化映射 我已经尝试过的事情 不使用嵌套对象 它不起作用,因为没有“加入”。图表已创建,但信息毫无价值

使用kibana嵌套fork 这实际上很有帮助。至少我们可以生成一个带有嵌套字段的图。但这并没有完全解决问题

在图表顶部的搜索栏中使用脚本查询 该查询类似于:

 {
   "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()而不是==。非常感谢。