elasticsearch 如何在Kibana中编写与字段前4位匹配的字段脚本?,elasticsearch,kibana,elasticsearch,Kibana" /> elasticsearch 如何在Kibana中编写与字段前4位匹配的字段脚本?,elasticsearch,kibana,elasticsearch,Kibana" />

elasticsearch 如何在Kibana中编写与字段前4位匹配的字段脚本?

elasticsearch 如何在Kibana中编写与字段前4位匹配的字段脚本?,elasticsearch,kibana,elasticsearch,Kibana,我对语法有一个陡峭的学习曲线,我的数据有PII,所以我不知道如何描述更多 我需要在已经索引的文档中的kibana中添加一个新字段。该字段“C”将是字段“a”的前4位数字的组合,该字段包含多达数百万个数字,类型为:关键字,以及字段“B”,类型为:关键字,是一些大数字。 稍后,我将使用这个字段“C”,它是一个独特的组合,与项目列表/数组进行比较(我将在Kibana的查询DSL中插入列表,因为我需要用返回的文档构建一些可视化和报告)。 我看到我可以使用无痛来创建这个新字段,但我不知道是否需要使用正则表

我对语法有一个陡峭的学习曲线,我的数据有PII,所以我不知道如何描述更多

我需要在已经索引的文档中的kibana中添加一个新字段。该字段“C”将是字段“a”的前4位数字的组合,该字段包含多达数百万个数字,类型为:关键字,以及字段“B”,类型为:关键字,是一些大数字。 稍后,我将使用这个字段“C”,它是一个独特的组合,与项目列表/数组进行比较(我将在Kibana的查询DSL中插入列表,因为我需要用返回的文档构建一些可视化和报告)。 我看到我可以使用无痛来创建这个新字段,但我不知道是否需要使用正则表达式以及如何使用

编辑:

如有要求,请提供有关映射的更多信息,并提供一个具体示例

"fieldA" : {
        "type: "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
           }
          }
        },
"fieldB" : {
        "type: "text",
        "fields" : {
          "keyword" : {
            "type" : "keyword",
            "ignore_above" : 256
           }
          }
        },
值的示例: FieldA=“9876443320134”, FieldB=“00000000 1”。
我想将FieldA的前4位数字和FieldB的全部内容相加。FieldC将导致值“9877”。

原始查询可能如下所示:

GET combination_index/_search
{
  "script_fields": {
    "a+b": {
      "script": {
        "source": """
          def a = doc['fieldA.keyword'].value;
          def b = doc['fieldB.keyword'].value;
          
          if (a == null || b == null) {
            return null
          }
          
          def parsed_a = new BigInteger(a);
          def parsed_b = new BigInteger(b);
          
          return  new BigInteger(parsed_a.toString().substring(0, 4)) + parsed_b;
        """
      }
    }
  }
}
注1:我们正在将字符串解析为似乎不足的
Integer.MAX_值的
biginger
b/c

注2:我们首先解析
fieldA
,然后再次调用
.toString
,以处理
fieldA
的边缘情况,如
009876443320134
启动w/0s。假设您正在查找的是
9876
,而不是
98
,这是首先调用
.substring
然后进行解析的结果


如果您打算在Kibana可视化中使用它,首先需要一个索引模式。一旦您有了一个,您可以按照以下步骤进行:

然后将脚本放入:

单击“保存”,新脚本将在数值聚合和查询中可用:


请使用具体的例子。嗨@Joe,刚刚编辑。希望我能提供一个具体的映射示例。提前谢谢!嗨,乔,谢谢你的回答。我今天会试试,稍后再回复。这方面运气好吗?很抱歉耽搁了乔,他有一些健康问题。我认为你的回答是接受的,因为它对我有帮助。非常感谢。不用担心,很高兴它有帮助!