2
我試圖使用tire
寶石等值與elasticsearch-rails
寶石的Item
模型轉換的映射:如何建立與elasticsearch護欄映射路由
tire do
mapping(
_parent: { type: 'player' },
_routing: { required: true, path: :user }
) do
indexes :user, type: "string", index: :not_analyzed
end
我在elasticsearch-rails
映射:
mapping(_parent: {type: 'player', require: 'true', _routing: {path: 'user', required: 'true'}}) do
indexes :user, type: "string", index: not_analyzed
end
這似乎好了,直到我嘗試導入一些玩家:
transform_function = lambda do |item|
{
index: {
_id: item.id,
_parent: item.player_id,
_routing: item.user_id,
data: item.__elasticsearch__.as_indexed_json
}
}
Item.__elasticsearch__.import \
index: 'my_index',
batch_size: 100,
transform: transform_function
我得到一個錯誤,當我嘗試導入的東西:
Elasticsearch::Transport::Transport::Errors::BadRequest: [400]
{
"error" : "MapperParsingException[The provided routing value [1] doesn't match the routing key stored in the document: [null]]",
"status":400
}
我不知道這是什麼錯誤意味着我似乎無法在網上找到適用的解釋。其他遇到這種錯誤的人似乎正在做一些不同的事情......
我認爲這只是一個問題,我如何在elasticsearch-rails
中聲明映射。不幸的是,關於這應該看起來沒有太多文檔......任何人都有想法?