>

부모-자녀 관계 구축에 대한 공식 문서에 언급 된 예를 참조- https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html

링크는 질문이 부모이고 답변이 자식 유형 인 질문-응답 조인 관계를 제공했습니다.

한 번의 쿼리로 특정 텍스트와 일치하는 모든 부모와 자녀와 관련된 특정 텍스트와 일치하는 자녀를 검색해야하는 경우 어떻게해야합니까?

아래와 같이 json 문서에 키-값 쌍이 있다고 가정하고 질문의 텍스트와 일치하는 부모와 응답 텍스트의 값과 일치하는 자녀를 검색합니다.

Parent --> question --> "question-text" : "Geography: Where is Mt. Everest?"
Child --> answer --> "answer-text" : "Nepal?"

우리는 결과에 부모 나 자녀만을 원치 않으며 쿼리와 일치하는 관련 자녀를 가진 모든 부모를 원합니다.

내부 안타는 옵션이라는 것을 알고 있지만 사용법을 알 수 없습니다- https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-inner-hits.html

질문이 명확하기를 바랍니다. 필요한 경우 자세한 내용을 추가 할 수 있습니다.

또한 부모-자식 내부 히트에 대해 여기에 언급 된 예를 시도했습니다 :

예 :

POST test_index/_search
    {
      "query": {
        "has_child": {
          "type": "child",
          "query": {
            "match": {
              "number": 2
            }
          },
          "inner_hits": {}    
        }
      }
    }

이것은 나에게 모든 부모의 어울리는 아이들을 준다. 하위 필터와 함께 동일한 쿼리에서 특정 상위에 대해서만 필터를 부모에 추가하고 쿼리하는 방법은 무엇입니까? 동일한 쿼리에서 특정 필드의 상위 레코드를 필터링 할 수 있습니까?

이와 같은 일-

POST test_index/_search
    {
      "query": {
        <match parents first on number:1 and then match the children below>
        "has_child": {
          "type": "child",
          "query": {
            "match": {
              "number": 2
            }
          },
          "inner_hits": {}    
        }
      }
    }


  • 답변 # 1

    이것은 저에게 효과적이었습니다. 유일한 단점은 kibana Discover 대시 보드가 has_child 또는 has_parent를 지원하지 않으므로 시각화를 구축 할 수 없다는 것입니다.

    POST test_index/_search
    {
        "query": {
            "bool": {
                "must": [{
                    "has_child": {
                        "type": "childname",
                        "query": {
                            "match": {
                                "properties.name": "hello"
                            }
                        },
                         "inner_hits": {}    
                    }
                },
                {
                    "match": {
                        "account.name": "random",
                        "version": {"2.0"}
                    }
                },{
                    "match": {
                        "account.name": "random",
                        "version": {"2.0"}
                    }
                ]
            }
        }
    }
    
    

관련 자료

  • 이전 java - Gradle의 jacoco 플러그인에서 생성 된 sourceSet를 제외하는 방법
  • 다음 java - PESSIMISTIC_WRITE가 전체 테이블을 잠그나요?