首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elasticsearch-rails映射中的路由设置

elasticsearch-rails映射中的路由设置
EN

Stack Overflow用户
提问于 2015-11-04 18:22:28
回答 1查看 665关注 0票数 2

我正在尝试将使用Item gem的tire模型的映射转换为与elasticsearch-rails gem等价的映射:

代码语言:javascript
复制
tire do
  mapping(
    _parent: { type: 'player' },
    _routing: { required: true, path: :user }
  ) do

  indexes :user, type: "string", index: :not_analyzed

end

我在elasticsearch-rails中的映射是:

代码语言:javascript
复制
mapping(_parent: {type: 'player', require: 'true', _routing: {path: 'user', required: 'true'}}) do
  indexes :user, type: "string", index: not_analyzed
end

在我试着引进一些玩家之前,这似乎还可以:

代码语言:javascript
复制
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

当我试图导入内容时,我会遇到一个错误:

代码语言:javascript
复制
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中声明映射的一个问题。不幸的是,关于这件事应该看上去没有那么多的文件.有人有主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-05 17:45:38

我不知道谁否决了这个问题,但我认为这是一个非常有用的问题。

原来,当你不需要path的时候。实际上,您可以这样设置路由部分:

代码语言:javascript
复制
_routing: {type: 'user', required: 'true'})

我希望这能帮上忙。

对于否决这个问题的人来说:也许与其无缘无故地让这个社区不受欢迎,不如添加一个评论来解释为什么这个问题是坏的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33529253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档