2013-11-03 2 views
0

에 facetting I는 다음과 같습니다 매핑을 가지고있다. mydoc이고 문서 내에서 함께 중첩 된 문서를 연결 및 ElasticSearch

, 나는 모든 ID를 찾으려면 :

  • 는 event.type = 'A'와 함께 이벤트를이 존재하고 event.idList는
  • 또 다른 이벤트가 존재한다 X 일부 ID가 포함 event.type = 'B'이고 event.id는 X와 같습니다.

색인 전체에서이 기준이 유지되는 ID 목록과 mydoc 문서 수의 개수 (각 ID에 대한 개수)가 필요합니다. 에서 발생했습니다.

ElasticSearch에서이를 수행 할 수 있습니까? 중첩 된 패싯 필터 나 용어 필터 조회를 사용하는 것이 가능할 수도 있다고 생각했지만 아직까지이를 수행하는 방법을 보지 못했습니다.

답변

0

상위 - 하위 관계가 중첩 된 문서보다 나은 경우가 있다고 생각합니다.
그런 다음 이벤트 범위에서만 검색하거나 특정 최상위 문서로 제한하기 위해 _parent 필드에 조건을 추가하면 직접 (자식) 이벤트 문서를 쿼리 할 수 ​​있습니다.
그리고 당신은 답장을

+0

감사 (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-has-child-filter.html 참조)하지만이 도움이 될 방법을 잘 모르겠어요 has_child 필터를 사용하거나 이벤트에 대한 조건 최상위 문서에 (또는면) 검색 조회 할 수 있습니다 - 경우 이벤트 문서는 mydoc 문서의 하위 항목이었습니다. 그런 다음 has_child를 사용하여 A 유형의 이벤트 (idlist에는 특정 ID X가 있음)와 B 유형 (X는 ID로 사용)의 이벤트가있는 모든 mydocs를 찾을 수 있었지만 X에 대한 값을 지정해야합니다. 실제로 수행 할 작업은이 조건이 만족하는 모든 ID를 찾는 것입니다 (ID를 지정하지 않아도 됨) ... 여기에 누락 된 것이 있습니까? – Josh

+0

문제를 잘 모르겠습니다. 이벤트 = A 또는 B 인 모든 ID를 가져 오시겠습니까? 그렇다면 이벤트 유형에 대한 조건과 id 필드에 facet이있는 idList를 사용하여 부울 검색을 수행 할 수 있습니다. 그러면 id 목록을 얻을 수 있습니다. –

+0

아니요 .. 최상위 워드 프로세서 (mydoc 문서) 내에서 검색하고 이벤트 중첩 배열에 유형 A와 유형 B가있는 두 개 이상의 이벤트가 들어있는 위치를 찾고이 두 이벤트가 ID (여기서 ID는 A의 idList 필드와 B의 id 필드에 나타납니다. 단일 mydoc 문서 내에서 모든 ID를 찾으려면 나중에 모든 mydoc 문서를 검색하고 개수가 – Josh

관련 문제