2017-01-19 13 views
0

私はElasticSearchといくつかの助けが必要だと思います。Elasticsearch親の子供は子の代わりに親を返す

私はparent childのマッピングを持っており、子ドキュメントの親またはのいずれかの単語を含むドキュメントを検索したいと思います。 SOの質問とその答えを考えてください。回答には1:nの質問があります。私はSeachWordが質問にある質問(親)を取得したいと思います。もし、SearchWordが質問に含まれていなくても、SearchWordが子供の答えであれば質問をしたいと思います。

これは私のクエリです。結果は子ドキュメントですが、親ドキュメントを取得する予定です。

{ 
    "query": { 
     "bool": { 
      "should": [{ 
       "query_string": { 
        "query": "SearchWord" 
       } 
      }, 
      { 
       "has_child": { 
        "type": "answers", 
        "query": { 
         "match": { 
          "_all": "SearchWord" 
         } 
        } 
       } 
      }] 
     } 
    }, 
    "size": 1 
} 

ありがとうございました!

UPDATE

問合せは、私の唯一のミスは、インデックスに対してクエリを実行することでした完全に正しいです。

Worng:カール/インデックス/ _search

正しい:カール/インデックス/ parenttype/_search

私は、これは、親子の問題を持っている人が;-)

を検索することができます願っています

よろしくお願いいたします。
フィリップ

答えて

-1

あなたの答えは、私が探していたまさにはありませんが、私は私の右方向を与えました。
私はインデックス全体の代わりにの親タイプを照会する必要があります。だから、これは私の解決策で、期待どおりに働いています。

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "has_child": { 
      "type": "answers", 
      "query": { 
       "query_string": { 
       "query": "SearchWord" 
       } 
      } 
      } 
     }, 
     { 
      "query_string" : { 
       "query": "SearchWord" 
      } 
     } 
     ] 
    } 
    }, 
    "size": 1 
} 

ありがとうございました!

+0

私は質問が間違っているのが不思議です:)何がうまくいかなかったのですか? –

+0

あなたの答えは、子の種類を照会し、親の文書を探すことでした。私はちょうどそれが別の方法の周りにしたかった。私が最初にそれをテストしていたとき、私は子のドキュメントを受け取ったので、インデックスを使用していました。それがあなたの答えがきちんと合わないと思った理由です。しかし、私が言ったように**あなたの答えは道を導いた** ;-)乾杯 – reeperbahnause

0

お子様にお問い合わせください。filter on parent

カール/ INDEXNAME/childType

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "has_parent": { 
      "type": "questions", 
      "query": { 
       "query_string": { 
       "query": "SearchWord" 
       } 
      } 
      } 
     }, 
     { 
      "match": { 
      "_all": "SearchWord" 
      } 
     } 
     ] 
    } 
    }, 
    "size": 1 
} 
関連する問題