My Rails 응용 프로그램에서 Tire를 사용하여 Elasticsearch와 통신합니다. 지금까지 모든 것이 잘 작동합니다.MySQL JDBC 강에서의 Elasticsearch 필터링 결과
일부 외부 데이터 소스의 색인 생성 문제가 있습니다.
레일스에서 업데이트되지 않은 추가 소스가 있으며이 정보를 얻기 위해 Elasticsearch river JDBC plugin을 사용하여 매 60 초마다 데이터베이스를 폴링합니다.
이 데이터는 Rails 애플리케이션 내에서 액세스됩니다. 다른 모델에서 나는 검색 데이터에 대한 사용자의 액세스를 제한하는 간단한 필터를 사용하고 있습니다 : location_users가 타이어에 의해 인덱싱 동안 배열로 매핑되는
def self.search(params)
tire.search(page: params[:page], per_page: 50) do |s|
...
filter << { :terms => { location_users: [params[:user_id]] }} if params[:user_id]
...
end
end
.
def to_indexed_json
to_json methods: [:location_users]
end
def location_users
location.users.map(&:id) if location
end
강을 사용
(I 다른 사람의 계정 데이터를 검색하는 사용자를하지 않으려는) 내가 MySQL의에서 데이터 및 관련 테이블 열을 얻을 수있는 몇 가지 SQL을 썼다. 내가 location_users의 목록을 얻을 수있는 유일한 방법은 다음과 같이 뭔가를 수행하여이었다
SELECT a.*, l.location_name, GROUP_CONCAT(lu.id) as location_users FROM accounts...
것은 나에게 쉼표로 구분 된 값으로 location_users 필드를 주었다. 그러나 분명히 배열이 아닙니다.
이제 검색 할 때 필터가 배열을 찾고 반환되는 목록 일 뿐이므로 결과가 0이됩니다.
이 필드를 배열로 색인화 할 수있는 방법이 있습니까? 아니면 다시 작동하도록 필터를 변경하는 방법이 있습니까?
이 인식 아니었다 색인화 할 때. 나중에 테스트 할 것입니다. – simonmorley