2014-10-24 2 views
2

저는 현재 탄성 검색을 찾고 있으며 인덱스 유형이 데이터 모델에 어떻게 들어 맞는지 파악하고 있으며 예제와 설명서를 읽었지만 아무 것도 실제로 깊이 들어 가지 않습니다. 예제는 여러 개의 서브 모델로 구성된 데이터 모델을 사용하는 것처럼 보입니다.ElasticSearch 래핑 헤드 인덱스 유형

내가 현재 내 데이터를 저장의 내가 검색 색인하려는 제 콜렉션의 예를 취할 수 있도록하여 MongoDB를 사용하고

, 내 문서는 다음과 같습니다 :

Article = { 
    title: String, 
    publisher: String, 
    subject: String, 
    description: String, 
    year: Integer, 
} 

가 지금은 그 각각을 원하는 필드를 검색 할 수 있도록 'Article'의 탄성 검색 인덱스를 만들 것입니다. 각 필드를 정의하고 분석해야하는 방법과 저장 여부에 대해 이해해야합니다.

이제 인덱스 유형은 어떻게 생성됩니까? 내가 아는 한, Lucene에는 이러한 개념이 없습니다. Elasticsearch가 추가 한 계층입니다.

예를 들어 논리적으로 주제 나 게시자별로 문서를 그룹화하고 색인 유형을 만들 수 있다고 말할 수도 있지만 주제 나 게시자별로 검색하는 것과 어떻게 다른가요?

인덱스와 관련된 성능 관련 측면이 더 있습니까?

답변

0

아주 쉬운 질문은 아니지만 시도해 보겠습니다. 그러나 이것을 내 의견으로 경고하십시오.

우선, 색인에 특정 문서를 보관하고 싶지 않다면, 꼭해야한다고 생각하기 때문에 별도의 색인을 작성하십시오. 더 많은 유형에 대해 더 많은 인덱스를 사용하는 것에 대한 벌칙은 없습니다. 내가 생각할 수있는 유일한 방법은 분석기와 매핑을 만들어 다른 유형에서 재사용 할 수 있다는 것입니다.

문서가 함께 소속되어 있다고 느끼면 유형은 비슷하지만 구조는 비슷하지만 필요하지는 않지만 동일한 구조를 사용할 수 있습니다. 그러나 동일한 색인 내의 다른 유형에 같은 이름의 필드에 대해 별도의 매핑을 만들지 마라. Lucene은 이것을 좋아하지 않습니다.

부모 시나리오와 자식 관계에서 마지막 시나리오가 있기 때문에 여기에 유형이 필요합니다. 이 방법으로 부모와 자식은 성능면에서 더 나은 동일한 샤드의 장소가 될 수 있습니다.

희망이 조금 있습니다.

0

내가 잘못 본 것이 아니라면 하나의 인덱스에서 둘 이상의 데이터 유형을 사용하는 것이 다른 인덱스를 사용하는 것과 거의 동일합니다. 예를 들어, 동일한 인덱스 "주소"에 "simple_address", "delivery_address", "some_strange_but_official_address_info"유형의 문서를 저장하여 코드를 좀 더 정상적으로 저장할 수 있습니다. 그러나 부모 - 자식 링크를 사용하지 않으면 세 가지 색인 만 갖는 것과 같습니다.

예를 들어 말하면 검색 할 내용을 머리에 넣어야합니다. 예를 들어 방정식에 주석을 추가하는 경우 부모 - 자식 색인 또는 키에 의한 수동 매핑이있는 다른 색인으로 어떤 종류의 분리를 사용하는 것이 좋습니다. 그리고 분명히 "Article"과 "Comment"유형에 대해 서로 다른 매핑을 가져야합니다.

+0

그렇습니다. 색인에서 다른 유형으로 정의 된 상위 하위 관계가있는 경우, 제 경우에는 그러한 관계가 없으므로 기사/조항 (색인/유형)과 같은 것을해야합니다. 나는 단순히 엔티티가있다. –

+0

@iQ 그래서 원하는 설정을 사용할 수있는 것처럼 보입니다. "기사 전용"모드 이상으로 스케일링을 조심하십시오. 다른 인덱스를 사용하면 다른 다중 노드 설정 문제를 의미합니다. –

관련 문제