没有路由集的Elasticsearch文档没有显示或更新

时间:2013-05-20 20:44:05

标签: elasticsearch tire

所以我有几个文档(5),我正在创建并尝试更新。它们都很相似但是在我将它们插入到elasticsearch之后,只有其中一个响应了

的简单查询
curl localhost:9200/myindex/posts/:id

其中:id是elasticsearch中_id数字的替身。其他人给我一个

{"_index":"myindex","_type":"post","_id":":id","exists":false}

然而每当我像这样进行查询时

curl localhost:9200/myindex/posts/:id?routing=3

返回结果。

这不会是一个问题,但是,我正在尝试使用像这样的Tire进行部分更新

Tire.index('myindex'){ update 'post', id, :doc => { :doc_body => content } }

并且未显示未指定路由号码时无法找到的项目的更新。

我只想了解为什么elasticsearch会以这种方式运作。

1 个答案:

答案 0 :(得分:0)

所以我发现,因为我正在使用路由,所以我必须像这样编写更新

 Tire.index('myindex'){ update 'post', id, { :doc => { :doc_body => content } } { :routing => routing_id } }
很酷的是,如果您使用Tire进行搜索,它会自动进行,使用路由查找文档。

所以

Tire.search('myindex'){ query { string '_id:xxx' } }.results

将返回结果

curl localhost:9200/myindex/posts/xxx 

可能不是

我仍然不明白为什么某些文档会显示正常的get请求而其他文档在编制索引后却没有:\