gpt4 book ai didi

elasticsearch - 映射中不存在表达式中使用的字段 []

转载 作者:行者123 更新时间:2023-11-29 02:50:14 24 4
gpt4 key购买 nike

我尝试实现的功能是在 kibana 中创建一个显示“未验证”用户数量的指标。我会在用户注册时发送日志,然后在验证用户时发送日志。

所以我想要的计数是注册数量和验证数量之间的差值。

在 kibana 我不能做这样的数学运算,所以我找到了一个解决方法:我添加了一个名为“unvalidated”的“脚本字段”,当用户注册时它等于 1,当用户验证他的帐户时它等于 -1。“未验证”字段的总和应为未验证用户数。

这是我在脚本字段中定义的脚本:
文档['ctxt_code'].value == 1 ? 1:文档['ctxt_code'].value == 2 ? -1 : 0

与:

  • ctxt_code 1作为注册日志

  • ctxt_code 2 作为验证日志

当我所有的日志都有“ctxt_code”时,此设置运行良好,但是当推送没有此字段的日志时,kibana 会抛出以下错误:


映射中不存在表达式中使用的字段 [ctxt_code]
kibana error

我无法理解这个错误,因为 kibana 说:


如果一个字段是稀疏的(只有一些文档包含一个值),缺少该字段的文档的值为 0

原来如此。

有人知道吗?

最佳答案

没有ctxt_code 字段的日志是可以的...但是您必须在您的索引中有这个字段的映射。我看到您正在使用 logstash-* 查询多个索引,因此您可能正在查询一个没有它的索引。

您可以在所有索引中包含您的字段的映射。只需进入 Sense并使用这个:

PUT logstash-*/_mappings/[your_mapping_name]
{
"properties": {
"ctxt_code": {
"type": "short", // or any other numeric type, including dates
"index": "not_analyzed" // Only works for non-analyzed fields.
}
}
}

如果您愿意,可以从命令行执行此操作:CURL -XPUT 'http://[elastic_server]/logstash-*/_mappings/[your_mapping_name]' -d '{ ... 相同的 JSON 。 ..}'

关于elasticsearch - 映射中不存在表达式中使用的字段 [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37300524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com