我有一個基於Elasticsearch和輪胎的全文搜索的Rails應用程序,它已經在一個叫做Category的MongoDB模型上工作,但現在我想添加更多複雜的搜索基於MongoID Embedded 1-n模型用戶這embeds_many:監視列表Elasticsearch與輪胎在軌道大容量導入和索引問題
現在我已經在監視列表中批量導入和索引的所有領域,我想知道:
- 我該怎麼做呢?
- 可以索引監視列表兒童字段,沒有用戶父母字段?
嵌入式1-N的MongoDB/MongoID模型看起來如下:
應用/模型/ user.rb(父):
class User
include Mongoid::Document
include Tire::Model::Search
include Tire::Model::Callbacks
index_name 'users'
field :nickname
field ... many others
embeds_many :watchlists
end
應用/模型/ watchlist.rb (嵌入「許多」兒童):
class Watchlist
include Mongoid::Document
include Tire::Model::Search
include Tire::Model::Callbacks
index_name 'watchlists'
field :html_url
embedded_in :user
end
任何關於如何完成任務的建議?
UPDATE: 這裏是模型的一大塊見過蒙戈外殼
> user = db.users.findOne({'nickname': 'lgs'})
{
"_id" : ObjectId("4f76a16cf2a6a12f88cbca43"),
"encrypted_password" : "",
"sign_in_count" : 0,
"provider" : "github",
"uid" : "1573",
"name" : "Luca G. Soave",
"email" : "[email protected]",
"nickname" : "lgs",
"watchlists" : [
{
"_id" : ObjectId("4f76997f1d41c81173000002"),
"tags_array" : [ git, peristence ],
"html_url" : "https://github.com/mojombo/grit",
"description" : "Grit gives you object oriented read/write access to Git repositories via Ruby.",
"fork_" : false,
"forks" : 207,
"watchers" : 1258,
"created_at" : ISODate("2007-10-29T14:37:16Z"),
"pushed_at" : ISODate("2012-01-27T01:05:45Z"),
"avatar_url" : "https://secure.gravatar.com/avatar/25c7c18223fb42a4c6ae1c8db6f50f9b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png"
},
...
...
}
我想指數&查詢由嵌入式孩子擁有的任何領域的觀察列表的文檔:
... "tags_array", "html_url", "description", "forks"
但我不希望elasticsearch包含父級用戶字段:
... "uid", "name", "email", "nickname"
這樣當我查詢「git persistence」時,它會查看原始MongoDB的每個'user'的每個'watchlist'索引字段。
(對不起,不匹配單數和複數在這裏,我只是表示doc對象名稱)
你好,有什麼消息嗎? – karmi
@karmi一切都好,謝謝,...我只是忘了更新和標誌。本質上它只是索引嵌入的文檔的子部分,它是... RAILS_ENV =生產耙環境輪胎:導入CLASS =監視列表FORCE = true –
很高興知道,酷! – karmi