gpt4 book ai didi

elasticsearch - 删除字段并将新字段添加到 Elasticsearch 索引中的映射

转载 作者:行者123 更新时间:2023-12-02 22:17:01 25 4
gpt4 key购买 nike

我在第一次为一个字段创建索引时犯了一个错误。我错误地将“整数”数据类型指定为“评级”字段的“字符串”,而不是“整数”数据类型。但是存储在字段中的数据只是整数。当我尝试计算平均评分聚合时,由于字符串数据类型,它抛出了一个错误。

  1. 有没有办法在不重新索引的情况下更改字段的数据类型?
  2. 如果不重新索引就不可能,我该如何删除评级字段并添加数据类型为“整数”的评级字段?

帮我解决这个问题。

更新

使用以下命令删除了索引中的类型

curl -XDELETE 'http://localhost:9300/feedbacks_16/responses'

删除了类型并创建了同名类型,更改了我的评分字段的数据类型并重新索引了整个数据。一切顺利,直到重新编制索引。但是平均查询不起作用。以下是我收到的错误:

{ "error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[2NsGsPYLR2eP9p2zYSnKGQ][feedbacks-16][0]: ClassCastException[org.elasticsearch.index.fielddata.plain.PagedBytesIndexFieldData cannot be cast to org.elasticsearch.index.fielddata.IndexNumericFieldData]}{[2NsGsPYLR2eP9p2zYSnKGQ][feedbacks_16][1]: ClassCastException[org.elasticsearch.index.fielddata.plain.PagedBytesIndexFieldData cannot be cast to org.elasticsearch.index.fielddata.IndexNumericFieldData]}{[pcwXn3X-TceUO0ub29ZFgA][feedbacks_16][2]: RemoteTransportException[[tsles02][inet[/localhost:9300]][indices:data/read/search[phase/query]]]; nested: ClassCastException; }{[pcwXn3X-TceUO0ub29ZFgA][feedbacks_16][3]: RemoteTransportException[[tsles02][inet[/localhost:9300]][indices:data/read/search[phase/query]]]; nested: ClassCastException; }{[2NsGsPYLR2eP9p2zYSnKGQ][feedbacks_16][4]: ClassCastException[org.elasticsearch.index.fielddata.plain.PagedBytesIndexFieldData cannot be cast to org.elasticsearch.index.fielddata.IndexNumericFieldData]}]", "status": 500 }

最佳答案

除了少数异常(exception),映射 cannot be updated .有一些异常(exception):

  • 您可以添加新属性
  • 您可以将一个简单的字段提升为一个多字段
  • 您可以禁用 doc_values(但不能启用它们)
  • 您可以更新ignore_above参数

因此,如果您希望在不重新创建新索引的情况下将您的 rating 字段从字符串转换为整数,您唯一的解决方案是创建一个子字段(例如称为 rating.int ) 类型为 integer

请注意,您仍然需要重新索引数据以填充新的子字段。但是,如果您这样做,最好只是从头开始重新创建一个干净的索引并重新填充它。

关于elasticsearch - 删除字段并将新字段添加到 Elasticsearch 索引中的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34013228/

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