如何使用 Chewy 更新 Elasticsearch 字段类型
How to update Elasticsearch field type with Chewy
我的问题是关于使用 elasticsearch ruby 客户端 chewy.
更改我的 elasticsearch 索引中的字段类型
我正在尝试更新索引中的字段类型。我收到此错误:illegal_argument_exception
.
我了解到无法更改现有索引中的类型,因此我正在考虑重新索引所有内容:rake chewy:reset
。我已经尝试了很多东西...我的重新索引无法正常工作。
详细错误:
Elasticsearch::Transport::Transport::Errors::BadRequest: [400] {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"mapper [enabled] cannot be changed from type [text] to [boolean]"}],"type":"illegal_argument_exception","reason":"mapper [enabled] cannot be changed from type [text] to [boolean]"},"status":400}
我以前的索引(默认启用的字段是文本):
class SearchIndex < Chewy::Index
define_type Company, delete_if: :deleted_at do
...
field :enabled
...
end
end
我想要的索引:
class SearchIndex < Chewy::Index
define_type Company, delete_if: :deleted_at do
...
field :enabled, type: 'boolean'
...
end
end
我如何使用 Chewy(如果可能,不通过 curl 请求 ElasticSearch)来使用新的字段类型重新索引我的索引?
谢谢。
我以前没有使用过 Chewy,但查看文档您应该能够在 ruby 控制台中调用 SearchIndex.reset!
。当然,删除和重新创建索引是可能的,应该使用新数据类型从头开始重新创建。
我发现了为什么 Elsaticsearch 不希望我更改类型。这是因为我的索引有一些其他类型包含相同的字段(至少相同的字段名称),但具有另一种字段类型。
因此,所有同名的字段必须具有相同的类型。然后您将能够(并且您将不得不)删除您的索引并重新创建它。 (SearchIndex::purge!
完成工作)
我的问题是关于使用 elasticsearch ruby 客户端 chewy.
更改我的 elasticsearch 索引中的字段类型我正在尝试更新索引中的字段类型。我收到此错误:illegal_argument_exception
.
我了解到无法更改现有索引中的类型,因此我正在考虑重新索引所有内容:rake chewy:reset
。我已经尝试了很多东西...我的重新索引无法正常工作。
详细错误:
Elasticsearch::Transport::Transport::Errors::BadRequest: [400] {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"mapper [enabled] cannot be changed from type [text] to [boolean]"}],"type":"illegal_argument_exception","reason":"mapper [enabled] cannot be changed from type [text] to [boolean]"},"status":400}
我以前的索引(默认启用的字段是文本):
class SearchIndex < Chewy::Index
define_type Company, delete_if: :deleted_at do
...
field :enabled
...
end
end
我想要的索引:
class SearchIndex < Chewy::Index
define_type Company, delete_if: :deleted_at do
...
field :enabled, type: 'boolean'
...
end
end
我如何使用 Chewy(如果可能,不通过 curl 请求 ElasticSearch)来使用新的字段类型重新索引我的索引?
谢谢。
我以前没有使用过 Chewy,但查看文档您应该能够在 ruby 控制台中调用 SearchIndex.reset!
。当然,删除和重新创建索引是可能的,应该使用新数据类型从头开始重新创建。
我发现了为什么 Elsaticsearch 不希望我更改类型。这是因为我的索引有一些其他类型包含相同的字段(至少相同的字段名称),但具有另一种字段类型。
因此,所有同名的字段必须具有相同的类型。然后您将能够(并且您将不得不)删除您的索引并重新创建它。 (SearchIndex::purge!
完成工作)