通过比较 elasticsearch 和 kibana 中的字段来过滤结果

Filter results by comparison of fields in elasticsearch and kibana

我正在尝试构建一个 kibana 可视化,它显示字段 A 不等于另一个字段 B 的文档数。

这些应该首先按一个术语聚合,这样我在 X 轴上就有一些组。然后,对于所有这些不同的术语,我想显示字段 A 不等于字段 B 的计数。

Example
{
   "fieldA":"HR",
   "fieldB":"HR",
   "AggregateOnThisField":"A"
},
{
   "fieldA":"HR",
   "fieldB":"Admin",
   "AggregateOnThisField":"A"
}
{
   "fieldA":"Admin",
   "fieldB":"HR",
   "AggregateOnThisField":"B"
}
{
   "fieldA":"Admin",
   "fieldB":"HR",
   "AggregateOnThisField":"B"
}

因此,X 轴上将有两个点代表 A 和 B。A 的计数为 1,B 的计数为 2。我知道如何在 X 轴上绘制项,但发现很难实现此过滤器。

运行 两者的 v7.2。

提前致谢。

我可以通过在索引中添加一个脚本字段来解决这个问题。 为此,转到管理 -> 索引模式 -> select 你的索引 -> 脚本字段

由于我需要一个布尔值输出,select编辑了与类型下拉列表相同的内容。

然后在脚本中,添加这些行,

if(doc['fieldA.keyword'].value.toLowerCase().equals(doc['fieldB.keyword'].value.toLowerCase()))
    {
         return true;
    }
    else
    {
         return false;
    }

fieldA 和 fieldB 是字符串所以使用.keyword

添加此脚本后,我可以将其用作 kibana 可视化中的字段。