Elasticsearch 및 Tire를 기반으로 한 전체 텍스트 검색을 사용하는 레일 앱이 이미 Category라는 MongoDB 모델에서 작동하지만 이제는 복잡한 검색은 MongoID Embedded 1-n 모델을 사용하는 embeds_many에 따라 : 주시 이제 Tires on Rails 대량 가져 오기 및 인덱싱 문제가있는 Elasticsearch
내가 관심 목록에서 대량 가져 오기 및 인덱싱 모든 분야에 있고, 내가 알고 싶습니다- 내가 그걸 어떻게 할 수를?
- 은 사용자 상위 필드없이 watchlists 하위 필드 만 색인 할 수 있습니까?
응용 프로그램/모델/user.rb (부모) :
임베디드 1-N MongoDB를/MongoID 모델은 다음과 같습니다
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
:
... "tags_array", "html_url", "description", "forks"
: 여기 이 모델의 덩어리가 몽고에 볼이
> 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"
},
...
...
}
내가 & 쿼리에 포함 된 자녀가 소유 한 필드를 인덱스하고 싶습니다 쉘은 문서 주시
하지만 elasticsearch에 상위 사용자 입력란을 포함하지 않으려합니다.
... "uid", "name", "email", "nickname"
그래서 "git persistence"를 쿼리하면 원래 MongoDB의 각 '사용자'의 각 'watchlists'색인 필드를 조사하게됩니다.
(여기 단수와 복수형을 일치하지 미안, 난 그냥 문서 개체 이름을 표시했다) 정말 당신이 그 (것)들을 조회 할 방법에 따라, 검색 엔진에 대한 데이터를 직렬화하는 방법에 따라 달라집니다
안녕하세요. – karmi
@karmi 모든 것이 고마워, ... 나는 방금 업데이트하고 깃발을 놓는 것을 잊었다. 기본적으로 문서의 임베디드 된 자식 부분을 인덱싱하는 작업은 다음과 같습니다. RAILS_ENV = 프로덕션 레이크 환경 타이어 : import CLASS = 감시 목록 FORCE = true –
잘 알고있어서 기쁩니다! – karmi