나는이 질문에 대한 답을 알고 있지만 나보다 Elasticsearch 경험이 많은 사람에게서 확인을 찾고 있다고 확신한다.Elasticsearch에서 다 대다 관계를 처리하는 가장 좋은 방법은 무엇입니까?
저자와 도서가 포함 된 데이터베이스가 있다고 가정 해 봅니다. 저자는 0 개 이상의 서적과 연관 될 수 있으며 서적은 1 명 이상의 저자와 연관 될 수 있습니다. 우리는 사용자가 저자 이름을 검색하여 저자와 모든 책을 찾을 수있게하고, 책 제목을 검색하여 저자를 되찾기를 원합니다. 우리는 여러 저자의 책이 많이 있다는 것을 알고 있습니다.
Elasticsearch는 한 수준의 부모 - 자식 관계 만 직접 지원하기 때문에 자식은 부모를 하나만 가질 수 있기 때문에이 관계를 설정하기 위해 데이터를 비정규 화하고 중첩 된 개체를 사용해야합니다. 우리가 23 권의 책을 출간 한 저자의 속성을 수정하면 저자 기록과 23 권의 모든 도서 기록을 다시 색인해야합니다.
내 환상의 세계에서 저자 색인을 다시 작성할 필요가 없도록 제 23 권의 도서에 일련의 저자 ID가 포함되도록하고 싶습니다. 책이 한 명의 저자 만 가질 수 있다면 Elasticsearch의 부모 - 자식 지원 을 사용하는 것이 가능할 것 같지만, 다 대다 요구 사항으로 인해 변경 될 때마다 중첩 된 객체를 사용하고 관련 객체를 다시 색인해야합니다. .
이 정보가 맞습니까? 분명히 더 많은 작업 (확실히 더 많은 업데이트)처럼 보이지만 복잡하고 버그와 광기를 가져 오는 "똑똑한"방식이 아니라 올바른 방법으로이 작업을 수행하려고합니다.
모든 안내를 받으실 수 있습니다.
예, 당신은 비정규해야합니다. 모든 부모 - 자식 관계 제공은 모든 샤드를 치는 대신 검색 또는 색인 작업을 특정 샤드로 지정하는 라우팅 매개 변수에 대한 구문 적 설탕이라는 것을 명심하십시오. 모델링 도구보다 성능 최적화가 더 중요합니다. 그것은 정말로 당신이 쿼리 시간에 무엇을 필요로 하느냐에 달려 있습니다. –
@ JoeP. 많은 업데이트를 막는 최선의 방법을 찾았습니까? –