2017-10-14 4 views
0

elasticsearch에서 안타와 투쟁 중. 어떤 도움을 주시면 감사하겠습니다.질의에 포함되지 않은 자식 유형의 안쪽 안쪽 히트 굴림

childA와 childB의 두 가지 하위 유형이 있습니다. 나는이

"query":{ 
    "bool": { 
     "should": { 
      "has_child": { 
       "type": "ChildA", 
       "query": { 
        "match": { 
         "name": { 
          "query": "a" 
         } 
        } 
       } 
      } 
     } 
    } 
} 

내 문제처럼 childA의 부모를 조회하고하는 것은 위의 쿼리의 결과에 영향을주지 않고뿐만 아니라 결과에 유형 childB의 모든 하위 문서를 포함하는 방법이다.

has_child 쿼리 (type childB)에서 inner-hits를 사용하려고했지만 내 쿼리가 childB 유형에 의존하지 않습니다.

누구나 아이디어가 있습니까?

미리 감사드립니다.

+0

당신이 보관하고 싶은 것이 명확하지 않다. –

+0

@ TarasKohut 죄송합니다. 제 질문은 잘 지정되지 않았습니다. 나는 실제로 길을 발견했다. 아래에 게시 됨 –

+0

매핑과 데이터 샘플을 추가하십시오. 아마도 우리는 당신에게 당신의 문제를 해결하는 더 나은 해결책을 줄 수있을 것입니다. – Eli

답변

0

childB 유형 문서를 포함하는 방법을 찾았습니다.

위 쿼리 (childA 유형의 has_child)와 필터 쿼리에서 다음 쿼리를 결합하여 childB docs도 가져옵니다. 좋은 생각인지 잘 모르겠다. (성능에 대해 생각해 보라.)

{ 
     "query":{ 
     "bool":{ 
      "should":[ 
      { 
       "bool":{ 
       "must_not":[ 
        { 
        "has_child":{ 
         "type":"ChildB", 
         "query":{ 
         "match_all":{} 
         }, 
         "inner_hits":{} 
        } 
        } 
       ] 
       } 
      }, 
      { 
       "has_child":{ 
       "type":"ChildB", 
       "query":{ 
        "match_all":{} 
       }, 
       "inner_hits":{} 
       } 
      } 
      ] 
     } 
     } 
    }