gpt4 book ai didi

elasticsearch - Elasticsearch将数字值显示为字符串

转载 作者:行者123 更新时间:2023-12-03 01:04:18 27 4
gpt4 key购买 nike

我在elasticsearch中发现下面的数据使我感到困惑:

 {
"_index": "statsd-2015.09.24",
"_type": "counter",
"_id": "AU__eqbL4jN5fst_IEyK",
"_score": 1,
"_source": {
"ns": "statsd",
"grp": "bad_lines_seen",
"tgt": "",
"act": "",
"val": 0,
"@timestamp": 1443072093000
}
},
{
"_index": "statsd-2015.09.24",
"_type": "counter",
"_id": "AU__fKQM4jN5fst_IEy_",
"_score": 1,
"_source": {
"ns": "statsd",
"grp": "bad_lines_seen",
"tgt": "",
"act": "",
"val": "0",
"@timestamp": "1443072852000"
}
}

为什么字段 val 时间戳以不同的格式显示?
  • 在第一个文档中,它们是数字
  • 在第二个文档中,它们是字符串

  • 它们在相同的索引和类型中,其映射为:
    {
    "statsd-2015.09.24": {
    "mappings": {
    "counter": {
    "properties": {
    "@timestamp": {
    "type": "date",
    "format": "dateOptionalTime"
    },
    "act": {
    "type": "string",
    "index": "not_analyzed"
    },
    "grp": {
    "type": "string",
    "index": "not_analyzed"
    },
    "ns": {
    "type": "string",
    "index": "not_analyzed"
    },
    "tgt": {
    "type": "string",
    "index": "not_analyzed"
    },
    "val": {
    "type": "long"
    }
    }
    }
    }
    }
    }

    这怎么可能 ?

    最佳答案

    您在文档的中发现了字段类型之间的差异。 _source是提交给ElasticSearch用以索引文档的原始JSON。

    但是,它实际上并不是索引的内容:它只是为了其他目的而存储(更多信息可以在documentation中找到)。

    在您的情况下,val映射为long字段,因此,第二个文档中提供的字符串值实际上已解析为其长值。

    您可以轻松地进行检查:尝试像这样对文档建立索引

    {
    "ns": "statsd",
    "grp": "bad_lines_seen",
    "tgt": "",
    "act": "",
    "val": "abc",
    "@timestamp": "1443072852000"
    }

    您将遇到以下解析错误:
    MapperParsingException[failed to parse [val]]; nested: NumberFormatException[For input string: \"abc\"]; 

    因此,回答您的问题:值的类型不同,但是实际上由于解析,两个值都被索引为 long

    关于elasticsearch - Elasticsearch将数字值显示为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32754299/

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