gpt4 book ai didi

elasticsearch - 重新索引后Elasticsearch不遵循_mapping

转载 作者:行者123 更新时间:2023-12-03 00:57:15 28 4
gpt4 key购买 nike

我有一个名为last_post_date的字段存储在elasticsearch中。

显示为:

...
"last_post_date": "1485281760000",
...

并具有如下映射:
"last_post_date": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},

现在,我使用以下映射创建一个新索引:
...
"last_post_date": {
"type": "date",
"format": "epoch_millis",
"index": true,
"doc_values": true
},
...

并通过以下方式进行完全重建索​​引:
http://127.0.0.1:9200/_reindex

问题在于,即使在重新索引后,在映射显示时,该字段的值也将存储为字符串而不是日期:
...
"last_post_date": {
"type": "date",
"store": true,
"format": "epoch_millis"
},
...

知道为什么吗?

最佳答案

您在源代码中看到的内容,即"1485281760000"形式的类似字符串的时间戳将不会更改,并且将始终反射(reflect)您发送给Elasticsearch的完全相同的JSON。

但是,在被索引时,字符串"1485281760000"实际上将被解释并索引为长值1485281760000

如果要更改要使用较长时间戳而不是字符串时间戳发送的JSON源(如下所示),则该源将显示较长的时间戳。

...
"last_post_date": 1485281760000,
...

长话短说:
  • 您在_source中看到的就是您发送给ES的内容
  • 根据您创建的映射来解释和索引源的每个字段,即,字符串时间戳将被强制为长整数,并被解释为epoch_millis
  • 格式的日期
  • 如果无法根据您的映射正确地解释,索引和强制某些字段值,则会出现错误,并且根本不会为文档建立索引。
  • 关于elasticsearch - 重新索引后Elasticsearch不遵循_mapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427945/

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