각각의 계정에서 각 계정 (사용자)을 물리적으로 분리하는 것을 참조하십니까? 이것은 일반적으로 '멀티 테넌트 (multi-tenant)'이 당신이 무엇을 밖으로 설정할 참 가정 http://en.wikipedia.org/wiki/Multitenancy
라고 :
는 많은
가 '필요'에 대해 과거에 말했다되었습니다 (난 당신이 원하는 가정 보안상의 이유로, 비록 멀티 테넌시 응용 프로그램의 전문가가 아니지만 사용자가 계정/사용자별로 데이터를 분할하지 않아도되는 이유에 대해 잘 알고 있지는 않습니다. Contact
의 경우 accountid
적어도 귀하의 검색어는 모두 accountid
으로 필터링해야합니다. 예를 들어 시스템에서 사용되는 모든 쿼리가 accountid
을 설정하는 데 필요한 '수퍼 쿼리'를 상속받은 경우 신중하게 설계된 쿼리 구성 요소 인 IMO가 많은 경우에 충분합니다.
미래에 어떤 색인을 검색할지 미리 알지 못하는 경우에도 ES를 중심으로가는 REST 서비스를 사용하고 모든 프로그램이 이 서비스. 그런 다음이 서비스가 accountid
을 적용하거나이 요청을 수행하는 현재 로그인 한 사용자가 accountid
을 유추하여이 유형의 보안을 처리하게 할 수 있습니다.
여전히 멀티 입주를 원한다면 http://elasticsearch-users.115913.n3.nabble.com/Multi-tenacy-td471400.html (빨리 검색하면 좋을 것 같습니다.) 'Kimchy'(ES 창안자) 주석도 볼 수 있습니다.
멀티 테넌시를 보유한 ES의 가장 좋은 방법은 계정/사용자 당 1 개의 색인을 갖는 것입니다. 그 안에 여러 개의 '유형'(ES 구조)을 가질 수 있습니다. Contact
은 그러한 유형이 될 수 있습니다.
http://www.elasticsearch.org/guide/reference/mapping/ http://www.elasticsearch.org/guide/reference/api/search/indices-types.html
당신이 제안하는대로, 아마 올바른 방법이 아니다, 당신의 모델이 시행 IMO. 일반적으로 저장소 백엔드에 대한 지식 (데이터가 저장된 인덱스 포함)으로부터 도메인 모델을 깨끗하게 유지해야합니다.
나에게 더 나은 해결책은 이전에 제안한 것처럼 쿼리 기반의 방법을 사용하는 것입니다. 구성 요소는 계정/사용자를 기반으로 올바른 색인을 선택하는 논리가 포함됩니다. 위의 rest-service 접근법과 함께, 당신이 제안한 dynamic indexname은 요청을하는 로그인 한 사용자로부터 파생 될 수 있습니다.
나는 이것이 아마도 당신의 질문에 대한 직접적인 대답은 아니지만, 그럼에도 불구하고 유용하다고 생각합니다.
필드에 'firmid'라는 필드와 필터가있는'contact '를 정의 하시겠습니까? 그렇지 않으면 –
에 대해 귀하가 무엇을 묻고 있는지 잘 모르겠습니까? –